Commit 2a0b8d2c38ec3d32180dbb2276de2d91686fb7d1
1 parent
35c71481
Exists in
master
and in
112 other branches
Restore node state in tree for a plot request
Showing
4 changed files
with
113 additions
and
11 deletions
Show diff stats
js/app/models/PlotObjects/PlotPanelObject.js
... | ... | @@ -31,6 +31,14 @@ Ext.define('amdaPlotObj.PlotPanelObject', { |
31 | 31 | |
32 | 32 | fields : [ |
33 | 33 | {name: 'id', type: 'string'}, |
34 | + {name: 'panel-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set | |
35 | + {name: 'axes-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set | |
36 | + {name: 'params-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set | |
37 | + {name: 'add-objects-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set | |
38 | + {name: 'legends-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set | |
39 | + {name: 'text-legends-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set | |
40 | + {name: 'drawing-objects-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set | |
41 | + {name: 'fills-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set | |
34 | 42 | {name: 'panel-index', type: 'int'}, |
35 | 43 | {name: 'panel-background-color', type: 'string'}, |
36 | 44 | {name: 'panel-title-text', type: 'string'}, |
... | ... | @@ -613,6 +621,15 @@ Ext.define('amdaPlotObj.PlotPanelObject', { |
613 | 621 | |
614 | 622 | panelValues['id'] = this.get('id'); |
615 | 623 | |
624 | + panelValues['panel-node-state'] = this.get('panel-node-state'); | |
625 | + panelValues['axes-node-state'] = this.get('axes-node-state'); | |
626 | + panelValues['params-node-state'] = this.get('params-node-state'); | |
627 | + panelValues['add-objects-node-state'] = this.get('add-objects-node-state'); | |
628 | + panelValues['legends-node-state'] = this.get('legends-node-state'); | |
629 | + panelValues['text-legends-node-state'] = this.get('text-legends-node-state'); | |
630 | + panelValues['drawing-objects-node-state'] = this.get('drawing-objects-node-state'); | |
631 | + panelValues['fills-node-state'] = this.get('fills-node-state'); | |
632 | + | |
616 | 633 | panelValues['panel-index'] = this.get('panel-index'); |
617 | 634 | |
618 | 635 | panelValues['panel-background-color'] = this.get('panel-background-color'); |
... | ... |
js/app/models/PlotObjects/PlotTabObject.js
... | ... | @@ -29,7 +29,9 @@ Ext.define('amdaPlotObj.PlotTabObject', { |
29 | 29 | {name: 'id', type: 'int'}, |
30 | 30 | {name: 'tree-simplified-view', type: 'boolean'}, |
31 | 31 | {name: 'multi-plot-linked', type: 'boolean'}, |
32 | - {name: 'page-title-text', type: 'string'}, | |
32 | + {name: 'page-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set | |
33 | + {name: 'panels-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set | |
34 | + {name: 'page-title-text', type: 'string'}, | |
33 | 35 | {name: 'page-title-color', type: 'string'}, |
34 | 36 | {name: 'page-title-position', type: 'string'}, |
35 | 37 | {name: 'page-title-alignment', type: 'string'}, |
... | ... | @@ -223,6 +225,8 @@ Ext.define('amdaPlotObj.PlotTabObject', { |
223 | 225 | tabValues['id'] = this.get('id'); |
224 | 226 | tabValues['tree-simplified-view'] = this.get('tree-simplified-view'); |
225 | 227 | tabValues['multi-plot-linked'] = this.get('multi-plot-linked'); |
228 | + tabValues['page-node-state'] = this.get('page-node-state'); | |
229 | + tabValues['panels-node-state'] = this.get('panels-node-state'); | |
226 | 230 | tabValues['page-title-text'] = this.get('page-title-text'); |
227 | 231 | tabValues['page-title-color'] = this.get('page-title-color'); |
228 | 232 | tabValues['page-title-position'] = this.get('page-title-position'); |
... | ... |
js/app/models/PlotObjects/PlotTreeNode.js
... | ... | @@ -43,17 +43,38 @@ Ext.define('amdaPlotObj.PlotTreeNode', { |
43 | 43 | //Additional information about a node to show in the tree view |
44 | 44 | getAdditionalText : null, |
45 | 45 | |
46 | + getNodeStateKey : null, | |
47 | + | |
48 | + getNodeState : function() | |
49 | + { | |
50 | + if (!this.getNodeStateKey || !this.object) | |
51 | + return; | |
52 | + return this.object.get(this.getNodeStateKey()); | |
53 | + }, | |
54 | + | |
55 | + setNodeState : function(state) | |
56 | + { | |
57 | + if (!this.getNodeStateKey || !this.object) | |
58 | + return; | |
59 | + this.object.set(this.getNodeStateKey(), state); | |
60 | + }, | |
61 | + | |
46 | 62 | constructor : function(config) |
47 | 63 | { |
48 | 64 | this.callParent(arguments); |
49 | 65 | this.set('text',this.text); |
50 | 66 | this.set('iconCls',this.iconCls); |
51 | 67 | this.set('leaf',this.leaf); |
52 | - this.set('expanded',this.expanded); | |
53 | 68 | this.set('type',this.type); |
54 | 69 | this.set('removable',this.removable); |
55 | 70 | if (config && config.object) |
56 | 71 | this.object = config.object; |
72 | + if (this.getNodeState() != 2) | |
73 | + this.set('expanded',(this.getNodeState() == 1)); | |
74 | + else { | |
75 | + this.set('expanded',this.expanded); | |
76 | + this.setNodeState(this.expanded ? 1 : 0); | |
77 | + } | |
57 | 78 | } |
58 | 79 | }, function () { |
59 | 80 | Ext.data.NodeInterface.decorate(this); |
... | ... | @@ -68,6 +89,11 @@ Ext.define('amdaPlotObj.PlotPageTreeNode', { |
68 | 89 | |
69 | 90 | type: 'page', |
70 | 91 | |
92 | + getNodeStateKey: function() | |
93 | + { | |
94 | + return 'page-node-state'; | |
95 | + }, | |
96 | + | |
71 | 97 | getAdditionalText: function() |
72 | 98 | { |
73 | 99 | return ' ('+this.object.getPageShortInfo()+')'; |
... | ... | @@ -98,7 +124,12 @@ Ext.define('amdaPlotObj.PlotPanelsTreeNode', { |
98 | 124 | |
99 | 125 | text: 'Panels list', |
100 | 126 | |
101 | - type: 'panels' | |
127 | + type: 'panels', | |
128 | + | |
129 | + getNodeStateKey: function() | |
130 | + { | |
131 | + return 'panels-node-state'; | |
132 | + } | |
102 | 133 | }); |
103 | 134 | |
104 | 135 | Ext.define('amdaPlotObj.PlotPanelTreeNode', { |
... | ... | @@ -112,6 +143,11 @@ Ext.define('amdaPlotObj.PlotPanelTreeNode', { |
112 | 143 | |
113 | 144 | removable: true, |
114 | 145 | |
146 | + getNodeStateKey: function() | |
147 | + { | |
148 | + return 'panel-node-state'; | |
149 | + }, | |
150 | + | |
115 | 151 | getAdditionalText: function() |
116 | 152 | { |
117 | 153 | return ' ('+this.object.getPanelShortInfo()+')'; |
... | ... | @@ -127,7 +163,12 @@ Ext.define('amdaPlotObj.PlotAxesTreeNode', { |
127 | 163 | |
128 | 164 | text: 'Axes', |
129 | 165 | |
130 | - type: 'axes' | |
166 | + type: 'axes', | |
167 | + | |
168 | + getNodeStateKey: function() | |
169 | + { | |
170 | + return 'axes-node-state'; | |
171 | + } | |
131 | 172 | }); |
132 | 173 | |
133 | 174 | Ext.define('amdaPlotObj.PlotTimeAxisTreeNode', { |
... | ... | @@ -209,7 +250,12 @@ Ext.define('amdaPlotObj.PlotParamsTreeNode', { |
209 | 250 | |
210 | 251 | text: 'Params', |
211 | 252 | |
212 | - type: 'params' | |
253 | + type: 'params', | |
254 | + | |
255 | + getNodeStateKey: function() | |
256 | + { | |
257 | + return 'params-node-state'; | |
258 | + } | |
213 | 259 | }); |
214 | 260 | |
215 | 261 | Ext.define('amdaPlotObj.PlotParamTreeNode', { |
... | ... | @@ -242,7 +288,12 @@ Ext.define('amdaPlotObj.PlotAdditionalObjectsTreeNode', { |
242 | 288 | |
243 | 289 | text: 'Additional Objects', |
244 | 290 | |
245 | - type: 'objects' | |
291 | + type: 'objects', | |
292 | + | |
293 | + getNodeStateKey: function() | |
294 | + { | |
295 | + return 'add-objects-node-state'; | |
296 | + } | |
246 | 297 | }); |
247 | 298 | |
248 | 299 | Ext.define('amdaPlotObj.PlotLegendsTreeNode', { |
... | ... | @@ -252,7 +303,12 @@ Ext.define('amdaPlotObj.PlotLegendsTreeNode', { |
252 | 303 | |
253 | 304 | text: 'Legends', |
254 | 305 | |
255 | - type: 'legends' | |
306 | + type: 'legends', | |
307 | + | |
308 | + getNodeStateKey: function() | |
309 | + { | |
310 | + return 'legends-node-state'; | |
311 | + } | |
256 | 312 | }); |
257 | 313 | |
258 | 314 | Ext.define('amdaPlotObj.PlotSeriesLegendTreeNode', { |
... | ... | @@ -281,7 +337,12 @@ Ext.define('amdaPlotObj.PlotTextLegendsTreeNode', { |
281 | 337 | |
282 | 338 | text: 'Text Legends', |
283 | 339 | |
284 | - type: 'text-legends' | |
340 | + type: 'text-legends', | |
341 | + | |
342 | + getNodeStateKey: function() | |
343 | + { | |
344 | + return 'text-legends-node-state'; | |
345 | + } | |
285 | 346 | }); |
286 | 347 | |
287 | 348 | Ext.define('amdaPlotObj.PlotTextLegendTreeNode', { |
... | ... | @@ -310,7 +371,12 @@ Ext.define('amdaPlotObj.PlotDrawingObjectsTreeNode', { |
310 | 371 | |
311 | 372 | text: 'Drawing objects', |
312 | 373 | |
313 | - type: 'drawing-objects' | |
374 | + type: 'drawing-objects', | |
375 | + | |
376 | + getNodeStateKey: function() | |
377 | + { | |
378 | + return 'drawing-objects-node-state'; | |
379 | + } | |
314 | 380 | }); |
315 | 381 | |
316 | 382 | Ext.define('amdaPlotObj.PlotConstantTreeNode', { |
... | ... | @@ -367,7 +433,12 @@ Ext.define('amdaPlotObj.PlotFillsTreeNode', { |
367 | 433 | |
368 | 434 | text: 'Fills', |
369 | 435 | |
370 | - type: 'fills' | |
436 | + type: 'fills', | |
437 | + | |
438 | + getNodeStateKey: function() | |
439 | + { | |
440 | + return 'fills-node-state'; | |
441 | + } | |
371 | 442 | }); |
372 | 443 | |
373 | 444 | Ext.define('amdaPlotObj.PlotFillTreeNode', { |
... | ... |
js/app/views/PlotComponents/PlotTree.js
... | ... | @@ -59,7 +59,7 @@ Ext.define('amdaPlotComp.PlotTree', { |
59 | 59 | pageNode.appendChild(new amdaPlotObj.PlotLayoutTreeNode({object : tabObject})); |
60 | 60 | |
61 | 61 | //Panels node |
62 | - this.panelsNode = pageNode.appendChild(new amdaPlotObj.PlotPanelsTreeNode()); | |
62 | + this.panelsNode = pageNode.appendChild(new amdaPlotObj.PlotPanelsTreeNode({object : tabObject})); | |
63 | 63 | } |
64 | 64 | else |
65 | 65 | this.panelsNode = this.store.getRootNode(); |
... | ... | @@ -510,6 +510,14 @@ Ext.define('amdaPlotComp.PlotTree', { |
510 | 510 | } |
511 | 511 | }, |
512 | 512 | |
513 | + onNodeCollapse: function(node) { | |
514 | + node.setNodeState(0); | |
515 | + }, | |
516 | + | |
517 | + onNodeExpand: function(node) { | |
518 | + node.setNodeState(1); | |
519 | + }, | |
520 | + | |
513 | 521 | getSelectedNode: function() { |
514 | 522 | var selection = this.getSelectionModel().getSelection(); |
515 | 523 | if ((selection == null) || (selection.length == 0)) |
... | ... | @@ -855,6 +863,8 @@ Ext.define('amdaPlotComp.PlotTree', { |
855 | 863 | select: me.onNodeSelect, |
856 | 864 | deselect: me.onNodeDeselect, |
857 | 865 | cellclick: me.onCellClick, |
866 | + itemcollapse: me.onNodeCollapse, | |
867 | + itemexpand: me.onNodeExpand, | |
858 | 868 | scope: me |
859 | 869 | }, |
860 | 870 | columns: [ |
... | ... |