@@ -32,12 +32,22 @@ RED.nodes = (function() {
3232 }
3333
3434 var registry = ( function ( ) {
35+ var moduleList = { } ;
3536 var nodeList = [ ] ;
3637 var nodeSets = { } ;
3738 var typeToId = { } ;
3839 var nodeDefinitions = { } ;
3940
4041 var exports = {
42+ getModule : function ( module ) {
43+ return moduleList [ module ] ;
44+ } ,
45+ getNodeSetForType : function ( nodeType ) {
46+ return exports . getNodeSet ( typeToId [ nodeType ] ) ;
47+ } ,
48+ getModuleList : function ( ) {
49+ return moduleList ;
50+ } ,
4151 getNodeList : function ( ) {
4252 return nodeList ;
4353 } ,
@@ -55,27 +65,33 @@ RED.nodes = (function() {
5565 typeToId [ ns . types [ j ] ] = ns . id ;
5666 }
5767 nodeList . push ( ns ) ;
68+
69+ moduleList [ ns . module ] = moduleList [ ns . module ] || {
70+ name :ns . module ,
71+ version :ns . version ,
72+ local :ns . local ,
73+ sets :{ }
74+ } ;
75+ moduleList [ ns . module ] . sets [ ns . name ] = ns ;
76+ RED . events . emit ( "registry:node-set-added" , ns ) ;
5877 } ,
5978 removeNodeSet : function ( id ) {
6079 var ns = nodeSets [ id ] ;
6180 for ( var j = 0 ; j < ns . types . length ; j ++ ) {
62- if ( ns . added ) {
63- // TODO: too tightly coupled into palette UI
64- RED . palette . remove ( ns . types [ j ] ) ;
65- var def = nodeDefinitions [ ns . types [ j ] ] ;
66- if ( def . onpaletteremove && typeof def . onpaletteremove === "function" ) {
67- def . onpaletteremove . call ( def ) ;
68- }
69- }
7081 delete typeToId [ ns . types [ j ] ] ;
7182 }
7283 delete nodeSets [ id ] ;
7384 for ( var i = 0 ; i < nodeList . length ; i ++ ) {
74- if ( nodeList [ i ] . id == id ) {
85+ if ( nodeList [ i ] . id === id ) {
7586 nodeList . splice ( i , 1 ) ;
7687 break ;
7788 }
7889 }
90+ delete moduleList [ ns . module ] . sets [ ns . name ] ;
91+ if ( Object . keys ( moduleList [ ns . module ] . sets ) . length === 0 ) {
92+ delete moduleList [ ns . module ] ;
93+ }
94+ RED . events . emit ( "registry:node-set-removed" , ns ) ;
7995 return ns ;
8096 } ,
8197 getNodeSet : function ( id ) {
@@ -84,32 +100,19 @@ RED.nodes = (function() {
84100 enableNodeSet : function ( id ) {
85101 var ns = nodeSets [ id ] ;
86102 ns . enabled = true ;
87- for ( var j = 0 ; j < ns . types . length ; j ++ ) {
88- // TODO: too tightly coupled into palette UI
89- RED . palette . show ( ns . types [ j ] ) ;
90- var def = nodeDefinitions [ ns . types [ j ] ] ;
91- if ( def . onpaletteadd && typeof def . onpaletteadd === "function" ) {
92- def . onpaletteadd . call ( def ) ;
93- }
94- }
103+ RED . events . emit ( "registry:node-set-enabled" , ns ) ;
95104 } ,
96105 disableNodeSet : function ( id ) {
97106 var ns = nodeSets [ id ] ;
98107 ns . enabled = false ;
99- for ( var j = 0 ; j < ns . types . length ; j ++ ) {
100- // TODO: too tightly coupled into palette UI
101- RED . palette . hide ( ns . types [ j ] ) ;
102- var def = nodeDefinitions [ ns . types [ j ] ] ;
103- if ( def . onpaletteremove && typeof def . onpaletteremove === "function" ) {
104- def . onpaletteremove . call ( def ) ;
105- }
106- }
108+ RED . events . emit ( "registry:node-set-disabled" , ns ) ;
107109 } ,
108110 registerNodeType : function ( nt , def ) {
109111 nodeDefinitions [ nt ] = def ;
110112 if ( def . category != "subflows" ) {
111113 def . set = nodeSets [ typeToId [ nt ] ] ;
112114 nodeSets [ typeToId [ nt ] ] . added = true ;
115+ nodeSets [ typeToId [ nt ] ] . enabled = true ;
113116
114117 var ns ;
115118 if ( def . set . module === "node-red" ) {
@@ -127,18 +130,15 @@ RED.nodes = (function() {
127130
128131 // TODO: too tightly coupled into palette UI
129132 }
130- RED . palette . add ( nt , def ) ;
131- if ( def . onpaletteadd && typeof def . onpaletteadd === "function" ) {
132- def . onpaletteadd . call ( def ) ;
133- }
133+ RED . events . emit ( "registry:node-type-added" , nt ) ;
134134 } ,
135135 removeNodeType : function ( nt ) {
136136 if ( nt . substring ( 0 , 8 ) != "subflow:" ) {
137137 // NON-NLS - internal debug message
138138 throw new Error ( "this api is subflow only. called with:" , nt ) ;
139139 }
140140 delete nodeDefinitions [ nt ] ;
141- RED . palette . remove ( nt ) ;
141+ RED . events . emit ( "registry:node-type-removed" , nt ) ;
142142 } ,
143143 getNodeType : function ( nt ) {
144144 return nodeDefinitions [ nt ] ;
0 commit comments