From d954b7ad042a4661313f1eb300d68d2681d51f6b Mon Sep 17 00:00:00 2001 From: Jin Qing Date: Thu, 17 Dec 2020 10:58:17 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=EF=BC=9A=E5=85=81=E8=AE=B8=E4=BB=BB=E6=84=8F?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=EF=BC=8C=E5=A6=82=E5=8E=9F=E6=9D=A5=E4=B8=8D?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E7=9A=84=E7=A9=BA=E5=AD=97=E7=AC=A6=E4=B8=B2?= =?UTF-8?q?=EF=BC=8C=E6=95=B0=E5=AD=97=E5=AD=97=E7=AC=A6=E4=B8=B2=EF=BC=8C?= =?UTF-8?q?true,=20false,=20=E6=97=A5=E6=9C=9F=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=BC=95=E5=8F=B7=E5=BC=BA=E5=88=B6=E4=B8=BA=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/directives/keytable.directive.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/app/directives/keytable.directive.js b/src/app/directives/keytable.directive.js index 3dc8e54f..6d22cec5 100644 --- a/src/app/directives/keytable.directive.js +++ b/src/app/directives/keytable.directive.js @@ -64,7 +64,7 @@ } function add(key, value, fixed) { - vm.rows.push({key:key, value:value, fixed:fixed===true}); + vm.rows.push({key:key, value:JSON.stringify(value), fixed:fixed===true}); } function remove(i) { @@ -82,8 +82,10 @@ if (! r.key) continue; var value = r.value; - if (!isNaN(value) && value !== '') { - value = parseFloat(value); + try { + value = JSON.parse(value); + } catch (e) { + // keep value as string } vm.model[r.key] = value; From 4ab761332d739242b0197ea622d7cdf774c7fb01 Mon Sep 17 00:00:00 2001 From: xiachongshang Date: Sun, 6 Mar 2022 10:46:56 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=E5=AF=BC=E5=87=BA=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/modals/editfolder.controller.js | 22 ++- src/app/pages/editor/modals/editfolder.html | 1 + .../pages/editor/modals/export.controller.js | 5 +- src/editor/editor/managers/ExportManager.js | 178 +++++++++++------- src/editor/project/Project.js | 1 + src/editor/project/managers/FolderManager.js | 3 + 6 files changed, 137 insertions(+), 73 deletions(-) diff --git a/src/app/pages/editor/modals/editfolder.controller.js b/src/app/pages/editor/modals/editfolder.controller.js index a658f111..d301c446 100644 --- a/src/app/pages/editor/modals/editfolder.controller.js +++ b/src/app/pages/editor/modals/editfolder.controller.js @@ -1,4 +1,4 @@ -(function() { +(function () { 'use strict'; angular @@ -15,17 +15,18 @@ ]; function EditFolderController($scope, - $window, - $state, - $stateParams, - dialogService, - notificationService) { + $window, + $state, + $stateParams, + dialogService, + notificationService) { var vm = this; vm.action = 'New'; vm.folder = null; vm.blacklist = null; vm.folderList = null; vm.original = null; + vm.showExport = false; vm.save = save; vm.remove = remove; @@ -39,6 +40,9 @@ vm.folder = folder.copy(); vm.original = folder; vm.action = 'Update'; + p._selectedFolder = folder; + console.log("EditFolderController:",folder) + vm.showExport = folder.category === "tree"; } else { vm.folder = new b3e.Folder(); vm.folder.category = 'tree'; @@ -46,7 +50,7 @@ var blacklist = []; var folderList = []; - p.folders.each(function(folder) { + p.folders.each(function (folder) { if (folder.name !== vm.folder.name) { blacklist.push(folder.name); if (vm.original != null && @@ -80,9 +84,9 @@ function remove() { dialogService. confirm( - 'Remove folder?', + 'Remove folder?', 'Are you sure you want to remove this folder?\n\nNote: all blocks using this folder will be removed.' - ).then(function() { + ).then(function () { var p = $window.editor.project.get(); p.folders.remove(vm.original); notificationService.success( diff --git a/src/app/pages/editor/modals/editfolder.html b/src/app/pages/editor/modals/editfolder.html index 517bd986..674e7e88 100644 --- a/src/app/pages/editor/modals/editfolder.html +++ b/src/app/pages/editor/modals/editfolder.html @@ -55,6 +55,7 @@

{{editfolder.action}} folder

+ diff --git a/src/app/pages/editor/modals/export.controller.js b/src/app/pages/editor/modals/export.controller.js index 65b40aee..41fcaa3a 100644 --- a/src/app/pages/editor/modals/export.controller.js +++ b/src/app/pages/editor/modals/export.controller.js @@ -44,7 +44,7 @@ var e = $window.editor.export; if (vm.type === 'project' && vm.format === 'json') { - _createJson(e.projectToData()); + _createJson(e.projectToDataByTree()); } else if (vm.type === 'tree' && vm.format === 'json') { _createJson(e.treeToData()); @@ -52,6 +52,9 @@ else if (vm.type === 'nodes' && vm.format === 'json') { _createJson(e.nodesToData()); } + else if (vm.type === 'folder' && vm.format === 'json') { + _createJson(e.folderToData()); + } } function _createJson(data) { diff --git a/src/editor/editor/managers/ExportManager.js b/src/editor/editor/managers/ExportManager.js index f55c6045..a2fec02c 100644 --- a/src/editor/editor/managers/ExportManager.js +++ b/src/editor/editor/managers/ExportManager.js @@ -1,44 +1,44 @@ -b3e.editor.ExportManager = function(editor) { +b3e.editor.ExportManager = function (editor) { "use strict"; function getBlockChildrenIds(block) { var conns = block._outConnections.slice(0); if (editor._settings.get('layout') === 'horizontal') { - conns.sort(function(a, b) { - return a._outBlock.y - - b._outBlock.y; + conns.sort(function (a, b) { + return a._outBlock.y - + b._outBlock.y; }); } else { - conns.sort(function(a, b) { - return a._outBlock.x - - b._outBlock.x; + conns.sort(function (a, b) { + return a._outBlock.x - + b._outBlock.x; }); } var nodes = []; - for (var i=0; i Date: Sun, 6 Mar 2022 10:47:14 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E8=BF=98=E5=8E=9F=E5=AF=BC=E5=87=BApro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/pages/editor/modals/import.controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/pages/editor/modals/import.controller.js b/src/app/pages/editor/modals/import.controller.js index 233dec30..c143901a 100644 --- a/src/app/pages/editor/modals/import.controller.js +++ b/src/app/pages/editor/modals/import.controller.js @@ -54,7 +54,7 @@ try { if (vm.type === 'project' && vm.format === 'json') { - i.projectAsData(data.data); + i.projectAsData(data); } else if (vm.type === 'tree' && vm.format === 'json') { i.treeAsData(data); From 21281e658a46817cd0a72c6ad720ce7c1e19e204 Mon Sep 17 00:00:00 2001 From: xiachongshang Date: Sun, 6 Mar 2022 11:42:57 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=E5=88=A0=E9=99=A4=E6=97=B6=EF=BC=8C=E4=B8=8B=E9=9D=A2?= =?UTF-8?q?=E7=9A=84=E8=8A=82=E7=82=B9=E4=B8=80=E8=B5=B7=E5=88=A0=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/modals/editfolder.controller.js | 57 ++++++++++++++++++- src/app/pages/editor/modals/editfolder.html | 1 + src/editor/editor/managers/ExportManager.js | 14 ++++- 3 files changed, 69 insertions(+), 3 deletions(-) diff --git a/src/app/pages/editor/modals/editfolder.controller.js b/src/app/pages/editor/modals/editfolder.controller.js index d301c446..8364ce7f 100644 --- a/src/app/pages/editor/modals/editfolder.controller.js +++ b/src/app/pages/editor/modals/editfolder.controller.js @@ -29,6 +29,7 @@ vm.showExport = false; vm.save = save; vm.remove = remove; + vm.removeTrees = removeTrees; _active(); @@ -41,7 +42,7 @@ vm.original = folder; vm.action = 'Update'; p._selectedFolder = folder; - console.log("EditFolderController:",folder) + console.log("EditFolderController:", folder) vm.showExport = folder.category === "tree"; } else { vm.folder = new b3e.Folder(); @@ -81,6 +82,60 @@ $state.go('editor'); } + function removeTrees() { + dialogService. + confirm( + 'Remove folder and sub Trees?', + 'Are you sure you want to remove this folder?\n\nNote: all blocks using this folder will be removed.' + ).then(function () { + var p = $window.editor.project.get(); + console.log("removeTrees.p", p) + console.log("removeTrees.vm.original", vm.original) + p.folders.remove(vm.original); + + if (vm.original.category === "tree") { + var reli = [] + p.trees.each(function (tree) { + console.log("removeTrees.tree", tree) + console.log("removeTrees.tree.folder", tree._root._parent) + + if (vm.original.name === tree._root._parent) { + reli.push(tree); + } + }, this); + reli.forEach(tree => { + p.trees.remove(tree); + console.log("removeTrees.trees.remove:", tree) + }); + + + } else { + var reli = [] + p.nodes.each(function (node) { + if (node.isDefault) { + return + } + console.log("removeTrees.node", node) + // console.log("removeTrees.node.folder", node._root._parent) + + if (vm.original.name === node.parent) { + reli.push(node); + } + }, this); + reli.forEach(node => { + p.nodes.remove(node); + console.log("removeTrees.nodes.remove:", node) + }); + } + + notificationService.success( + 'folder removed', + 'The folder has been removed from this project.' + ); + $state.go('editor'); + }); + } + function remove() { dialogService. confirm( diff --git a/src/app/pages/editor/modals/editfolder.html b/src/app/pages/editor/modals/editfolder.html index 674e7e88..ea49f44d 100644 --- a/src/app/pages/editor/modals/editfolder.html +++ b/src/app/pages/editor/modals/editfolder.html @@ -55,6 +55,7 @@

{{editfolder.action}} folder

+ diff --git a/src/editor/editor/managers/ExportManager.js b/src/editor/editor/managers/ExportManager.js index a2fec02c..c828ba90 100644 --- a/src/editor/editor/managers/ExportManager.js +++ b/src/editor/editor/managers/ExportManager.js @@ -82,9 +82,19 @@ b3e.editor.ExportManager = function (editor) { selectedTree: (tree ? tree._id : null), trees: [], custom_nodes: [], - custom_folders: this.foldersToData(), + custom_folders: [], }; - + if (!folder.isDefault) { + data.custom_folders.push({ + version: b3e.VERSION, + scope: 'folder', + name: folder.name, + category: folder.category, + title: folder.title, + description: folder.description, + parent: folder.parent, + }); + } project.trees.each(function (tree) { var d = this.treeToData(tree, true); d.id = tree._id; From 2e1540a562881a75f027b634dc083e99d29e061a Mon Sep 17 00:00:00 2001 From: xiachongshang Date: Sun, 6 Mar 2022 11:52:15 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/modals/editfolder.controller.js | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/app/pages/editor/modals/editfolder.controller.js b/src/app/pages/editor/modals/editfolder.controller.js index 8364ce7f..07a1ae2a 100644 --- a/src/app/pages/editor/modals/editfolder.controller.js +++ b/src/app/pages/editor/modals/editfolder.controller.js @@ -42,7 +42,7 @@ vm.original = folder; vm.action = 'Update'; p._selectedFolder = folder; - console.log("EditFolderController:", folder) + console.log("EditFolderController:", folder); vm.showExport = folder.category === "tree"; } else { vm.folder = new b3e.Folder(); @@ -89,43 +89,46 @@ 'Are you sure you want to remove this folder?\n\nNote: all blocks using this folder will be removed.' ).then(function () { var p = $window.editor.project.get(); - console.log("removeTrees.p", p) - console.log("removeTrees.vm.original", vm.original) + console.log("removeTrees.p", p); + console.log("removeTrees.vm.original", vm.original); p.folders.remove(vm.original); + var reli = [] if (vm.original.category === "tree") { - var reli = [] p.trees.each(function (tree) { - console.log("removeTrees.tree", tree) - console.log("removeTrees.tree.folder", tree._root._parent) + console.log("removeTrees.tree", tree); + console.log("removeTrees.tree.folder", tree._root._parent); if (vm.original.name === tree._root._parent) { reli.push(tree); } }, this); - reli.forEach(tree => { + for (var index = 0; index < reli.length; index++) { + var tree = reli[index]; p.trees.remove(tree); - console.log("removeTrees.trees.remove:", tree) - }); - - + console.log("removeTrees.trees.remove:", tree); + } + // reli.forEach(function(tree) { + // p.trees.remove(tree); + // console.log("removeTrees.trees.remove:", tree); + // }); } else { - var reli = [] p.nodes.each(function (node) { if (node.isDefault) { return } - console.log("removeTrees.node", node) + console.log("removeTrees.node", node); // console.log("removeTrees.node.folder", node._root._parent) if (vm.original.name === node.parent) { reli.push(node); } }, this); - reli.forEach(node => { + for (var i = 0; i < reli.length; i++) { + var node = reli[i]; p.nodes.remove(node); - console.log("removeTrees.nodes.remove:", node) - }); + console.log("removeTrees.nodes.remove:", node); + }; } notificationService.success( From c2939194604206438c67f1754825315e980ed729 Mon Sep 17 00:00:00 2001 From: buguang01 Date: Mon, 21 Nov 2022 09:25:33 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/libs/behavior3js-0.1.0.min.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/assets/libs/behavior3js-0.1.0.min.js b/src/assets/libs/behavior3js-0.1.0.min.js index f3502edd..c9800001 100644 --- a/src/assets/libs/behavior3js-0.1.0.min.js +++ b/src/assets/libs/behavior3js-0.1.0.min.js @@ -1720,7 +1720,7 @@ var p = Sequence.prototype; * @readonly **/ p.name = 'Sequence'; - + p.description = '顺序执行子节点,当子节点返回SUCCESS,直接访问下一个子节点;所有子节点都返回SUCCESS,Sequence节点才返回SUCCESS;当有子节点返回FAILURE,则后续子节点不再执行,Sequence节点直接返回FAILURE,类似于逻辑与的概念。'; /** * Tick method. * @@ -1796,7 +1796,7 @@ var p = Priority.prototype * @readonly **/ p.name = 'Priority'; - + p.description = '就是Selector节点,选择执行子节点,当子节点返回FAILURE,访问下一个子节点,当所有子节点都返回FAILURE,Priority节点返回FAILURE;当有子节点返回SUCCESS,则后续子节点不再执行,Priority节点直接返回SUCCESS,类似于逻辑或的概念。'; /** * Tick method. * @@ -1872,7 +1872,7 @@ var p = MemSequence.prototype * @readonly **/ p.name = 'MemSequence'; - + p.descriptions = 'MemSequence节点的逻辑和Sequence一样,这里涉及到一个b3.RUNNING的返回值。MemSequence却会记住之前在Running的子节点,下次遍历的时候,直接从Running的那个子节点开始,这可以很方便的继续之前中断的逻辑决策。' /** * Open method. * @@ -1962,6 +1962,7 @@ var p = MemPriority.prototype; * @readonly **/ p.name = 'MemPriority'; + p.descriptions = 'MemPriority节点的逻辑和Priority一样,然后Running的却会记住之前在Running的子节点,下次遍历的时候,直接从Running的那个子节点开始,这可以很方便的继续之前中断的逻辑决策。' /** * Open method. @@ -2051,6 +2052,7 @@ var p = Inverter.prototype; * @readonly **/ p.name = 'Inverter'; + p.descriptions = '' /** * Tick method. @@ -2130,6 +2132,7 @@ var p = Limiter.prototype; * @readonly **/ p.name = 'Limiter'; + p.descriptions = '' /** * Node title. Default to `Limit X Activations`. Used in Editor. @@ -2267,6 +2270,7 @@ var p = MaxTime.prototype; * @readonly **/ p.name = 'MaxTime'; + p.descriptions = '' /** * Node title. Default to `Max XXms`. Used in Editor. @@ -2402,6 +2406,7 @@ var p = Repeater.prototype; * @readonly **/ p.name = 'Repeater'; + p.descriptions = '' /** * Node title. Default to `Repeat XXx`. Used in Editor. @@ -2536,6 +2541,7 @@ var p = RepeatUntilFailure.prototype; * @readonly **/ p.name = 'RepeatUntilFailure'; + p.descriptions = '' /** * Node title. Default to `Repeat Until Failure`. @@ -2670,6 +2676,7 @@ var p = RepeatUntilSuccess.prototype; * @readonly **/ p.name = 'RepeatUntilSuccess'; + p.descriptions = '' /** * Node title. Default to `Repeat Until Success`. @@ -2802,6 +2809,7 @@ var p = Error.prototype; * @readonly **/ p.name = 'Error'; + p.descriptions = '' /** * Tick method. @@ -2868,6 +2876,7 @@ var p = Failer.prototype; * @readonly **/ p.name = 'Failer'; + p.descriptions = '' /** * Tick method. @@ -2934,6 +2943,7 @@ var p = Runner.prototype; * @readonly **/ p.name = 'Runner'; + p.descriptions = '' /** * Tick method. @@ -3000,6 +3010,7 @@ var p = Succeeder.prototype; * @readonly **/ p.name = 'Succeeder'; + p.descriptions = '' /** * Tick method. @@ -3066,6 +3077,7 @@ var p = Wait.prototype; * @readonly **/ p.name = 'Wait'; + p.descriptions = '' /** * Node title. Default to `Wait XXms`. Used in Editor. From ef140338a30c5efee8c0c2576b70603922f3bbc6 Mon Sep 17 00:00:00 2001 From: buguang01 Date: Mon, 21 Nov 2022 09:29:07 +0800 Subject: [PATCH 7/9] description fix --- src/assets/libs/behavior3js-0.1.0.min.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/libs/behavior3js-0.1.0.min.js b/src/assets/libs/behavior3js-0.1.0.min.js index c9800001..de848a9a 100644 --- a/src/assets/libs/behavior3js-0.1.0.min.js +++ b/src/assets/libs/behavior3js-0.1.0.min.js @@ -1872,7 +1872,7 @@ var p = MemSequence.prototype * @readonly **/ p.name = 'MemSequence'; - p.descriptions = 'MemSequence节点的逻辑和Sequence一样,这里涉及到一个b3.RUNNING的返回值。MemSequence却会记住之前在Running的子节点,下次遍历的时候,直接从Running的那个子节点开始,这可以很方便的继续之前中断的逻辑决策。' + p.description = 'MemSequence节点的逻辑和Sequence一样,这里涉及到一个b3.RUNNING的返回值。MemSequence却会记住之前在Running的子节点,下次遍历的时候,直接从Running的那个子节点开始,这可以很方便的继续之前中断的逻辑决策。' /** * Open method. * @@ -1962,7 +1962,7 @@ var p = MemPriority.prototype; * @readonly **/ p.name = 'MemPriority'; - p.descriptions = 'MemPriority节点的逻辑和Priority一样,然后Running的却会记住之前在Running的子节点,下次遍历的时候,直接从Running的那个子节点开始,这可以很方便的继续之前中断的逻辑决策。' + p.description = 'MemPriority节点的逻辑和Priority一样,然后Running的却会记住之前在Running的子节点,下次遍历的时候,直接从Running的那个子节点开始,这可以很方便的继续之前中断的逻辑决策。' /** * Open method. From 1d58216a9778de2edd4121d7ec55c387faaee660 Mon Sep 17 00:00:00 2001 From: buguang01 Date: Mon, 21 Nov 2022 13:45:16 +0800 Subject: [PATCH 8/9] =?UTF-8?q?textSymbol=20=E5=9B=A0=E4=B8=BAMem=E5=A4=9A?= =?UTF-8?q?=E5=8A=A0=E4=B8=80=E4=B8=AA*?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/editor/draw/symbols.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/editor/draw/symbols.js b/src/editor/draw/symbols.js index 1cccf781..a2b09881 100644 --- a/src/editor/draw/symbols.js +++ b/src/editor/draw/symbols.js @@ -118,8 +118,12 @@ }; b3e.draw.textSymbol = function(block, settings) { + var title = block.getTitle(); + if (title.substr(0,3) == "Mem"){ + title = "✷" + title.substr(3); + } var text = new createjs.Text( - block.getTitle(), + title, '18px Arial', settings.get('block_symbol_color') ); @@ -128,6 +132,14 @@ var bounds = text.getBounds(); text.regY = bounds.height/2; +/* +如果this.name中有Mem那就把星号加上去 + shape.graphics.setStrokeStyle(swidth, 'round'); + shape.graphics.beginStroke(scolor); + shape.graphics.beginFill(scolor); + shape.graphics.drawPolyStar(0, -ssize*0.75, ssize/2, 6, ssize/10, 0); +*/ + // text.x = -block._width/2; // text.y = -block._height/2; From 16a8e4c558d41820e1060a5a59c29a94d75c9c68 Mon Sep 17 00:00:00 2001 From: buguang01 Date: Mon, 21 Nov 2022 15:35:57 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E5=B1=9E=E6=80=A7=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E5=A4=A7=E4=B8=80=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/less/variables.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/less/variables.less b/src/assets/less/variables.less index c58e90a5..7a592ff1 100644 --- a/src/assets/less/variables.less +++ b/src/assets/less/variables.less @@ -29,7 +29,7 @@ @z-notification: 50; // SIZES ====================================================================== -@size-sidebar: 250px; +@size-sidebar: 400px; @size-menubar: 35px; @size-page-content: 700px+@size-sidebar;