From 542d1dc600702fac1942e0d7e59f2ad4885f1d1b Mon Sep 17 00:00:00 2001 From: Hiroyasu Nishiyama Date: Mon, 12 Nov 2018 20:59:09 +0900 Subject: [PATCH 1/8] update Japanese message catalogue - editor.json --- .../@node-red/editor-client/locales/ja/editor.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json index 136f9972b..51415b626 100644 --- a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json @@ -106,6 +106,7 @@ "warning": "警告: __message__", "warnings": { "undeployedChanges": "ノードの変更をデプロイしていません", + "nodeActionDisabled": "ノードのアクションは無効になっています", "nodeActionDisabledSubflow": "ノードのアクションは、サブフロー内で無効になっています", "missing-types": "不明なノードが存在するため、フローを停止しました。詳細はログを確認してください。", "safe-mode": "

セーフモードでフローを停止しました

フローを変更し、再起動するために変更をデプロイできます

", @@ -160,8 +161,10 @@ "subflow_plural": "__count__ 個のサブフロー", "selectNodes": "上のテキストを選択し、クリップボードへコピーしてください", "pasteNodes": "JSON形式のフローデータを貼り付けてください", + "selectFile": "読み込むファイルを選択してください", "importNodes": "フローをクリップボートから読み込み", "exportNodes": "フローをクリップボードへ書き出し", + "download": "ダウンロード", "importUnrecognised": "認識できない型が読み込まれました:", "importUnrecognised_plural": "認識できない型が読み込まれました:", "nodesExported": "クリップボードへフローを書き出しました", From cc8bc1339f16387bf6a325251dfffcaf2c840129 Mon Sep 17 00:00:00 2001 From: Hiroyasu Nishiyama Date: Mon, 12 Nov 2018 21:09:19 +0900 Subject: [PATCH 2/8] update Japanese message catalogue - nodes messages.json --- .../node_modules/@node-red/nodes/locales/ja/messages.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/nodes/locales/ja/messages.json b/packages/node_modules/@node-red/nodes/locales/ja/messages.json index fb1e8fd8c..df3974aac 100644 --- a/packages/node_modules/@node-red/nodes/locales/ja/messages.json +++ b/packages/node_modules/@node-red/nodes/locales/ja/messages.json @@ -410,7 +410,9 @@ "json-error": "JSONの構文解析エラー", "no-url": "URLが設定されていません", "deprecated-call": "非推奨の呼び出しです __method__", - "invalid-transport": "httpでないトランスポートが要求されました" + "invalid-transport": "httpでないトランスポートが要求されました", + "timeout-isnan": "タイムアウト値が数値ではないため無視します", + "timeout-isnegative": "タイムアウト値が負数のため無視します" }, "status": { "requesting": "要求中" From d80ea6c0f58d619161edbb6763c4de62dfb467b9 Mon Sep 17 00:00:00 2001 From: Hiroyasu Nishiyama Date: Tue, 13 Nov 2018 06:55:04 +0900 Subject: [PATCH 3/8] add additional Japanese translation --- .../@node-red/editor-client/locales/ja/editor.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json index 51415b626..5704d5eb0 100644 --- a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json @@ -513,7 +513,8 @@ "empty": "データが存在しません", "node": "Node", "flow": "Flow", - "global": "Global" + "global": "Global", + "deleteConfirm": "データを削除しても良いですか?" }, "palette": { "name": "パレットの管理", From e6e7747ae1c8829103b1516077b257939166e78e Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Tue, 13 Nov 2018 13:29:48 +0000 Subject: [PATCH 4/8] Handle missing wires prop and string x/y props on import --- .../node_modules/@node-red/editor-client/src/js/nodes.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/nodes.js b/packages/node_modules/@node-red/editor-client/src/js/nodes.js index c4b8e2b34..c24d95bc0 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/nodes.js +++ b/packages/node_modules/@node-red/editor-client/src/js/nodes.js @@ -955,11 +955,11 @@ RED.nodes = (function() { def = registry.getNodeType(n.type); if (!def || def.category != "config") { var node = { - x:n.x, - y:n.y, + x:parseFloat(n.x || 0), + y:parseFloat(n.y || 0), z:n.z, type:0, - wires:n.wires, + wires:n.wires||[], inputLabels: n.inputLabels, outputLabels: n.outputLabels, icon: n.icon, From 2dfb44362515aacdcb30eaf5c2ae08315d3682c9 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Tue, 13 Nov 2018 13:39:06 +0000 Subject: [PATCH 5/8] Handle missing tab.disabled property --- .../@node-red/editor-client/src/js/ui/workspaces.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js b/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js index fffe21e65..7a8da060e 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js @@ -107,8 +107,8 @@ RED.workspaces = (function() { changed = true; workspace.info = info; } - $("#red-ui-tab-"+(workspace.id.replace(".","-"))).toggleClass('workspace-disabled',workspace.disabled); - $("#workspace").toggleClass("workspace-disabled",workspace.disabled); + $("#red-ui-tab-"+(workspace.id.replace(".","-"))).toggleClass('workspace-disabled',!!workspace.disabled); + $("#workspace").toggleClass("workspace-disabled",!!workspace.disabled); if (changed) { var historyEvent = { @@ -254,10 +254,9 @@ RED.workspaces = (function() { } activeWorkspace = tab.id; event.workspace = activeWorkspace; - // $("#workspace").toggleClass("workspace-disabled",tab.disabled); RED.events.emit("workspace:change",event); window.location.hash = 'flow/'+tab.id; - $("#workspace").toggleClass("workspace-disabled",tab.disabled); + $("#workspace").toggleClass("workspace-disabled",!!tab.disabled); RED.sidebar.config.refresh(); RED.view.focus(); }, From 7515b745b5f17babc76fbb3e8a3078b52be78435 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Tue, 13 Nov 2018 15:10:19 +0000 Subject: [PATCH 6/8] Make sure editor footer is i18n enabled --- .../node_modules/@node-red/editor-client/src/js/ui/editor.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js index 121102719..fcfe7917d 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js @@ -1612,6 +1612,7 @@ RED.editor = (function() { $("#node-config-dialog-user-count").find("span").text(RED._("editor.nodesUse", {count:editing_config_node.users.length})).parent().show(); } trayBody.i18n(); + trayFooter.i18n(); finishedBuilding = true; done(); }); From e4f67df2a110914699955a3cdd20edd32dfe9ce0 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Tue, 13 Nov 2018 22:36:56 +0000 Subject: [PATCH 7/8] Add 'type already registered' check in palette editor --- .../editor-client/locales/en-US/editor.json | 2 + .../editor-client/src/js/ui/palette-editor.js | 84 +++++++++++++------ .../editor-client/src/sass/popover.scss | 5 ++ 3 files changed, 66 insertions(+), 25 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json index 7a7661b1f..27993fa9f 100644 --- a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json @@ -424,6 +424,8 @@ "updated": "updated", "install": "install", "installed": "installed", + "conflict": "conflict", + "conflictTip": "

The module cannot be installed as it includes a
node type that has already been installed

Conflicts with __module__

", "loading": "Loading catalogues...", "tab-nodes": "Nodes", "tab-install": "Install", diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js index 12febdcf2..c8f4e3d7d 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js @@ -321,7 +321,7 @@ RED.palette.editor = (function() { var catalogueLoadStart; var catalogueLoadErrors = false; - var activeSort = sortModulesAZ; + var activeSort = sortModulesRelevance; function handleCatalogResponse(err,catalog,index,v) { catalogueLoadStatus.push(err||v); @@ -333,6 +333,9 @@ RED.palette.editor = (function() { if (m.keywords) { m.index = m.index.concat(m.keywords); } + if (m.types) { + m.index = m.index.concat(m.types); + } if (m.updated_at) { m.timestamp = new Date(m.updated_at).getTime(); } else { @@ -413,6 +416,17 @@ RED.palette.editor = (function() { packageList.editableList('addItem',{start:10,more:filteredList.length-10}) } } + function sortModulesRelevance(A,B) { + var currentFilter = searchInput.searchBox('value').trim(); + if (currentFilter === "") { + return sortModulesAZ(A,B); + } + var i = A.info.index.indexOf(currentFilter) - B.info.index.indexOf(currentFilter); + if (i === 0) { + return sortModulesAZ(A,B); + } + return i; + } function sortModulesAZ(A,B) { return A.info.id.localeCompare(B.info.id); } @@ -747,32 +761,29 @@ RED.palette.editor = (function() { $('').text(RED._("palette.editor.sort")+' ').appendTo(toolBar); var sortGroup = $('').appendTo(toolBar); - var sortAZ = $('').appendTo(sortGroup); - var sortRecent = $('').appendTo(sortGroup); + var sortRelevance = $('').appendTo(sortGroup); + var sortAZ = $('').appendTo(sortGroup); + var sortRecent = $('').appendTo(sortGroup); - sortAZ.click(function(e) { - e.preventDefault(); - if ($(this).hasClass("selected")) { - return; - } - $(this).addClass("selected"); - sortRecent.removeClass("selected"); - activeSort = sortModulesAZ; - refreshFilteredItems(); + + var sortOpts = [ + {button: sortRelevance, func: sortModulesRelevance}, + {button: sortAZ, func: sortModulesAZ}, + {button: sortRecent, func: sortModulesRecent} + ] + sortOpts.forEach(function(opt) { + opt.button.click(function(e) { + e.preventDefault(); + if ($(this).hasClass("selected")) { + return; + } + $(".palette-editor-install-sort-option").removeClass("selected"); + $(this).addClass("selected"); + activeSort = opt.func; + refreshFilteredItems(); + }); }); - sortRecent.click(function(e) { - e.preventDefault(); - if ($(this).hasClass("selected")) { - return; - } - $(this).addClass("selected"); - sortAZ.removeClass("selected"); - activeSort = sortModulesRecent; - refreshFilteredItems(); - }); - - var refreshSpan = $('').appendTo(toolBar); var refreshButton = $('').appendTo(refreshSpan); refreshButton.click(function(e) { @@ -814,10 +825,23 @@ RED.palette.editor = (function() { $('').attr('href',entry.url).appendTo(titleRow); var descRow = $('
').appendTo(headerRow); $('
',{class:"palette-module-description"}).text(entry.description).appendTo(descRow); - var metaRow = $('
').appendTo(headerRow); $(' '+entry.version+'').appendTo(metaRow); $(' '+formatUpdatedAt(entry.updated_at)+'').appendTo(metaRow); + + var duplicateType = false; + if (entry.types && entry.types.length > 0) { + + for (var i=0;i',{class:"palette-module-meta"}).text(entry.types.join(",")).appendTo(headerRow); + } + var buttonRow = $('
',{class:"palette-module-meta"}).appendTo(headerRow); var buttonGroup = $('
',{class:"palette-module-button-group"}).appendTo(buttonRow); var installButton = $('').text(RED._('palette.editor.install')).appendTo(buttonGroup); @@ -830,6 +854,16 @@ RED.palette.editor = (function() { if (nodeEntries.hasOwnProperty(entry.id)) { installButton.addClass('disabled'); installButton.text(RED._('palette.editor.installed')); + } else if (duplicateType) { + installButton.addClass('disabled'); + installButton.text(RED._('palette.editor.conflict')); + RED.popover.create({ + target:installButton, + content: RED._('palette.editor.conflictTip',{module:duplicateType}), + trigger:"hover", + direction:"bottom", + delay:{show:750,hide:50} + }) } object.elements = { diff --git a/packages/node_modules/@node-red/editor-client/src/sass/popover.scss b/packages/node_modules/@node-red/editor-client/src/sass/popover.scss index 55b88452f..d703b29a7 100644 --- a/packages/node_modules/@node-red/editor-client/src/sass/popover.scss +++ b/packages/node_modules/@node-red/editor-client/src/sass/popover.scss @@ -159,3 +159,8 @@ border-color: #666 !important; } } +.red-ui-popover code { + border: none; + background: none; + color: #ccc; +} From 27365c9f7bcbc702dac08eb62e69f90ae25e6018 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Tue, 13 Nov 2018 23:11:28 +0000 Subject: [PATCH 8/8] Tweak conflict message --- .../@node-red/editor-client/locales/en-US/editor.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json index 27993fa9f..7abd54da1 100644 --- a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json @@ -425,7 +425,7 @@ "install": "install", "installed": "installed", "conflict": "conflict", - "conflictTip": "

The module cannot be installed as it includes a
node type that has already been installed

Conflicts with __module__

", + "conflictTip": "

This module cannot be installed as it includes a
node type that has already been installed

Conflicts with __module__

", "loading": "Loading catalogues...", "tab-nodes": "Nodes", "tab-install": "Install",