Blame view

js/app/views/PlotComponents/PlotTabPanel.js 6.05 KB
437c4dbc   Benjamin Renard   First implementat...
1
2
3
4
5
6
7
8
9
10
11
/**
 * Project   : AMDA-NG
 * Name      : PlotTabPanel.js
 * @class   amdaPlotComp.PlotTabPanel
 * @extends Ext.tab.Panel
 * @brief   Component use to show Plot tabs definition
 * @author  Benjamin Renard
 * @version $Id: PlotTabPanel.js benjamin $
 */

Ext.define('amdaPlotComp.PlotTabPanel', {
495fc7a3   Benjamin Renard   Adapt plot UI in ...
12
    extend: 'Ext.tab.Panel',
437c4dbc   Benjamin Renard   First implementat...
13
	
495fc7a3   Benjamin Renard   Adapt plot UI in ...
14
15
16
    requires: [
        'amdaPlotComp.PlotTabContent'
    ],
437c4dbc   Benjamin Renard   First implementat...
17
	
495fc7a3   Benjamin Renard   Adapt plot UI in ...
18
19
    //Link to the Plot UI
    plotUI : null,
437c4dbc   Benjamin Renard   First implementat...
20
	
495fc7a3   Benjamin Renard   Adapt plot UI in ...
21
22
    //Multiplot object
    multiplot_object: null,
84d442b4   Benjamin Renard   Synchronize plot ...
23
24

    tabbar_destroy : false,
437c4dbc   Benjamin Renard   First implementat...
25
	
495fc7a3   Benjamin Renard   Adapt plot UI in ...
26
27
28
29
    constructor: function(config) {
        this.init(config);	    
        this.callParent(arguments);
    },
437c4dbc   Benjamin Renard   First implementat...
30
	
495fc7a3   Benjamin Renard   Adapt plot UI in ...
31
32
33
34
    setMultiplotObject: function(multiplot_object) {
        var me = this;
        this.removeAll();
        this.multiplot_object = multiplot_object;
b9249413   Elena.Budnik   correct init value
35

495fc7a3   Benjamin Renard   Adapt plot UI in ...
36
37
38
39
        this.multiplot_object.plots().each(function (rec, index) {
            this.addPlotNode(rec, index == 0);
        }, this);
    },
8dddc557   Benjamin Renard   Fix plot reload
40
41
42
43
44
45
46
47
48
49
50

    reloadPlot : function(plotNode) {
        for (i = 0; i < this.items.getCount(); ++i)
        {
            var tabItem = this.items.getAt(i);
            var tabContent = tabItem.items.getAt(0);
            if (plotNode == tabContent.plotNode) {
                tabContent.updateUI();
            }
        }
    },
437c4dbc   Benjamin Renard   First implementat...
51
	
495fc7a3   Benjamin Renard   Adapt plot UI in ...
52
53
    addPlotNode: function(plotNode, selectTab)
    {
2048f5bc   Benjamin Renard   Fix save & edit plot
54
55
56
57
58
59
60
61
62
63
64
        for (i = 0; i < this.items.getCount(); ++i)
        {
            var tabItem = this.items.getAt(i);
            var tabContent = tabItem.items.getAt(0);
            if (plotNode == tabContent.plotNode) {
                //Already opened => select tab
                this.setActiveTab(tabItem);
                return;
            }
        }

495fc7a3   Benjamin Renard   Adapt plot UI in ...
65
        var tabNumber = this.getTabBar().items.getCount();
9705c573   Benjamin Renard   Duplicate plot
66
        var tabContent = new amdaPlotComp.PlotTabContent({plotNode: plotNode, tabIndex: tabNumber-1, plotTabPanel: this});
495fc7a3   Benjamin Renard   Adapt plot UI in ...
67
68
        var me = this;
        var tabComp = this.add({
d29f5012   Benjamin Renard   Fix doPlot
69
            title: tabContent.getPlotTitle(),
495fc7a3   Benjamin Renard   Adapt plot UI in ...
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
            closable: true,
            layout: 'fit',
            bodyStyle: 'background: none',
            defaults: {
                border: false
            },
            items: [
                tabContent
            ],
            listeners : {
                scope : this,
                beforeclose: function( tab, eOpts ) {
                    if (this.items.getCount() == 1)
                    {
                        myDesktopApp.warningMsg('You need to keep at least one plot definition');
                        return false;
                    }
                    return true;
                },
                close: function( tab, eOpts ) {
5c744625   Benjamin Renard   Synchronize reque...
90
                    if (tab.items.getAt(0).plotNode) {
d794a307   Benjamin Renard   Fix bug when a pl...
91
                        tab.items.getAt(0).resetModif();
57e15214   Benjamin Renard   Fix addParameter ...
92
                        this.multiplot_object.removePlotByInternalId(tab.items.getAt(0).plotNode.internalId);
5c744625   Benjamin Renard   Synchronize reque...
93
                    }
495fc7a3   Benjamin Renard   Adapt plot UI in ...
94
                },
84d442b4   Benjamin Renard   Synchronize plot ...
95
                destroy: function(tab, eOpts) {
d794a307   Benjamin Renard   Fix bug when a pl...
96
97
98
                    if (tab.items.getAt(0) && tab.items.getAt(0).plotNode) {
                        tab.items.getAt(0).resetModif();
                    }
84d442b4   Benjamin Renard   Synchronize plot ...
99
100
                    if (!this.tabbar_destroy)
                        this.updatePlotTabs();
495fc7a3   Benjamin Renard   Adapt plot UI in ...
101
102
103
                }
            }
        });
27b2a53e   Benjamin Renard   Link tab plot to ...
104
    	
495fc7a3   Benjamin Renard   Adapt plot UI in ...
105
106
        if (selectTab)
            this.setActiveTab(tabComp);
437c4dbc   Benjamin Renard   First implementat...
107
    	
495fc7a3   Benjamin Renard   Adapt plot UI in ...
108
109
        return tabContent;
    },
d794a307   Benjamin Renard   Fix bug when a pl...
110
111
112
113
114
115
116
117

    duplicatePlotNode: function(plotNode)
    {
        var newPlotNode = this.multiplot_object.duplicatePlot(plotNode);
        if (!newPlotNode)
            return null;
        return newPlotNode;
    },
437c4dbc   Benjamin Renard   First implementat...
118
	
495fc7a3   Benjamin Renard   Adapt plot UI in ...
119
120
    updatePlotTabs: function()
    {
57e15214   Benjamin Renard   Fix addParameter ...
121
122
123
124
        for (i = 0; i < this.items.getCount(); ++i)
        {
            var tabItem = this.items.getAt(i);
            var tabContent = tabItem.items.getAt(0);
d29f5012   Benjamin Renard   Fix doPlot
125
            tabContent.tabIndex = i;
57e15214   Benjamin Renard   Fix addParameter ...
126
            var plotNode = tabContent.plotNode;
d29f5012   Benjamin Renard   Fix doPlot
127
            var title = tabContent.getPlotTitle();
57e15214   Benjamin Renard   Fix addParameter ...
128
129
130
131
132
133
            tabItem.setTitle(title);
            if (!this.getActiveTab())
                this.setActiveTab(tabItem);
        }
    },

d794a307   Benjamin Renard   Fix bug when a pl...
134
135
136
137
138
139
140
141
142
143
144
145
    closePlotTabIfOpened: function(plotNodeToClose) {
        for (i = 0; i < this.items.getCount(); ++i)
        {
            var tabItem = this.items.getAt(i);
            var tabContent = tabItem.items.getAt(0);
            var plotNode = tabContent.plotNode;
            if (plotNode == renamedNode) {
                this.remove(tabItem.getId());
            }
        }
    },

5c744625   Benjamin Renard   Synchronize reque...
146
147
148
149
150
151
152
153
154
155
156
157
158
159
    updateRequestName: function(renamedNode)
    {
        for (i = 0; i < this.items.getCount(); ++i)
        {
            var tabItem = this.items.getAt(i);
            var tabContent = tabItem.items.getAt(0);
            var plotNode = tabContent.plotNode;
            if (plotNode == renamedNode) {
		plotNode.get('object').set('name', renamedNode.get('text'));
                tabContent.updateUI();
            }
        }
    },

57e15214   Benjamin Renard   Fix addParameter ...
160
161
162
163
    getCurrentPlotTabContent : function() {
        if (this.getActiveTab())
            return this.getActiveTab().child();
        return null;
495fc7a3   Benjamin Renard   Adapt plot UI in ...
164
    },
27b2a53e   Benjamin Renard   Link tab plot to ...
165
	
acafe456   Benjamin Renard   Fix Get Data
166
    updateTimeObjects : function() {
495fc7a3   Benjamin Renard   Adapt plot UI in ...
167
168
169
170
171
        for (i = 0; i < this.items.getCount(); ++i)
        {
            this.items.getAt(i).items.getAt(0).updateTimeObject();
        }
    },
27b2a53e   Benjamin Renard   Link tab plot to ...
172
	
495fc7a3   Benjamin Renard   Adapt plot UI in ...
173
174
175
176
    getTreeFromPlotTab: function(plotTab)
    {
        return plotTab.child().treePlot;
    },
437c4dbc   Benjamin Renard   First implementat...
177
	
495fc7a3   Benjamin Renard   Adapt plot UI in ...
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
    init : function(config) {
        var me = this;

        this.plotUI = config.plotUI;

        var myConf = {
            plain: true,
            bodyStyle: { background : '#dfe8f6' },
            border : false,
            defaults: {
                border: false
            },	
            tabBar:{
                items:[
                    {
                        text:'+',
                        closable: false,
                        handler:function(btn,e){
                            var tabContent = me.addPlotNode(me.multiplot_object.createNewPlot(), true);
                        }
                    }
84d442b4   Benjamin Renard   Synchronize plot ...
199
200
201
202
203
204
                ],
                listeners: {
                    beforedestroy: function(tabbar, eOpts) {
                        me.tabbar_destroy = true;
                    }
                }
495fc7a3   Benjamin Renard   Adapt plot UI in ...
205
206
207
208
209
            }
        };

        Ext.apply (this , Ext.apply (arguments, myConf));
    }
0b0c7bc6   Benjamin Renard   Fix bug #6488
210
});