Blame view

js/app/views/PlotTabResultUI.js 24.1 KB
16035364   Benjamin Renard   First commit
1
2
3
/**
 * Project   : AMDA-NG
 * Name      : PlotTabResultUI.js
18d4a11e   Benjamin Renard   Save and load plo...
4
5
 * @class    amdaUI.PlotTabResultUI
 * @extends  Ext. panel.Panel
16035364   Benjamin Renard   First commit
6
7
 * @brief    Plot Tab Result UI definition (View)
 * @author    
bab90f22   Elena.Budnik   format + #5668
8
 * @version  $Id: PlotTabResultUI.js benjamin 
16035364   Benjamin Renard   First commit
9
10
11
 */

Ext.define('amdaUI.PlotTabResultUI', {
bab90f22   Elena.Budnik   format + #5668
12
	extend: 'Ext.panel.Panel',
16035364   Benjamin Renard   First commit
13

bab90f22   Elena.Budnik   format + #5668
14
15
16
17
18
	alias: 'widget.plotTabResult',

	requires: [
		'amdaPlotComp.PlotZoomPlug',
		'amdaPlotComp.PlotExtendShiftPlug',
bab90f22   Elena.Budnik   format + #5668
19
20
21
		'amdaPlotComp.PlotContextManager',
		'amdaPlotComp.PlotResultImage'
	],
8c88a270   Erdogan Furkan   10312 - Navigatio...
22
23
24
25
26
27
28

	panelImage: null,
	crtContext: null,
	interactiveId: '',
	navToolBar: null,
	isTTNavBar: false,
	crtTTFileIndex: 0,
bab90f22   Elena.Budnik   format + #5668
29
	disableSynchronize: false,
27a055f4   Benjamin Renard   Multiplot (#8314)
30
	multiplot: false,
55b10506   Benjamin Renard   Update correctly ...
31
	plotName: '',
1f9f9178   Menouard AZIB   I have created a ...
32
	listParams: [],
8c88a270   Erdogan Furkan   10312 - Navigatio...
33

bab90f22   Elena.Budnik   format + #5668
34
	hiddenForm: null,
8c88a270   Erdogan Furkan   10312 - Navigatio...
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

	constructor: function (config) {
		this.addEvents({ 'pagesize': true });

		this.init(config);
		this.callParent(arguments);
	},

	updateConfig: function (name, multiplot) {
		this.multiplot = multiplot;
		this.plotName = name;
		this.findParentByType('window').setTitle(this.plotName + (this.multiplot ? ' - Synchronized to Multiplot' : ''));
	},

	getImageSize: function () {
bab90f22   Elena.Budnik   format + #5668
50
51
		if (!this.crtContext)
			return {
8c88a270   Erdogan Furkan   10312 - Navigatio...
52
53
				width: 0,
				height: 0
bab90f22   Elena.Budnik   format + #5668
54
			};
8c88a270   Erdogan Furkan   10312 - Navigatio...
55
56
57
58
59

		return {
			width: this.crtContext.page.width * this.sliderPage.getValue() / 100.,
			height: this.crtContext.page.height * this.sliderPage.getValue() / 100.
		}
bab90f22   Elena.Budnik   format + #5668
60
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
61
62
63

	getImageUrl: function (resultFolder, plotFile) {
		return 'data/' + sessionID + '/RES/' + resultFolder + '/' + plotFile;
bab90f22   Elena.Budnik   format + #5668
64
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
65
66
67

	toPixelOnSourceImage: function (value) {
		return value * 100 / this.sliderPage.getValue();
d0b61b72   Benjamin Renard   Show coordinates ...
68
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
69
70
71

	toPixelOnResultImage: function (value) {
		return value * this.sliderPage.getValue() / 100;
d0b61b72   Benjamin Renard   Show coordinates ...
72
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
73
74

	createZoomItemsForPanel: function (panelId) {
9f08f4eb   Benjamin Renard   Zoom in interacti...
75
76
77
		var zoomPlugin = this.getPlugin('plot-zoom-plugin-id');
		if (zoomPlugin == null)
			return;
8c88a270   Erdogan Furkan   10312 - Navigatio...
78

9f08f4eb   Benjamin Renard   Zoom in interacti...
79
		var panelContext = amdaPlotComp.PlotContextManager.getPanelById(this.crtContext, panelId);
caff798e   Benjamin Renard   Fix zoom bar for ...
80
		var size = this.getImageSize();
1f9f9178   Menouard AZIB   I have created a ...
81
82
		// We need a list of parameters to compute the number of points needed to apply FFT
		this.listParams = panelContext["parameters"];
1f9f9178   Menouard AZIB   I have created a ...
83
		zoomPlugin.setParameters(this.listParams);
8c88a270   Erdogan Furkan   10312 - Navigatio...
84

9f08f4eb   Benjamin Renard   Zoom in interacti...
85
		var me = this;
8b11b1af   Benjamin Renard   Insert intervals ...
86
		var insertIntervalItem = null;
a54cfb3f   Benjamin Renard   Merge amdadev int...
87
		var plotFunctionItem = null;
9f08f4eb   Benjamin Renard   Zoom in interacti...
88
89
90
91
92
93
94
		Ext.each(panelContext.plotArea.axes, function (axis) {
			//Events for zoom on a time axis
			var onMinTimeSelection = function (posX) {
				//Panel and axis context must be retrieved by using the crtContext
				var panelContext = amdaPlotComp.PlotContextManager.getPanelById(me.crtContext, panelId);
				var axisContext = amdaPlotComp.PlotContextManager.getPanelAxisById(panelContext, axis.id);
				var sourceXPos = me.toPixelOnSourceImage(posX);
8c88a270   Erdogan Furkan   10312 - Navigatio...
95
96
				var crtTimestamp = amdaPlotComp.PlotContextManager.toAxisValue(axisContext, panelContext.plotArea.x, panelContext.plotArea.x + panelContext.plotArea.width, sourceXPos);
				var crtTime = new Date(crtTimestamp * 1000);
9f08f4eb   Benjamin Renard   Zoom in interacti...
97
98
99
				crtTime = Ext.Date.add(crtTime, Ext.Date.MINUTE, crtTime.getTimezoneOffset());
				zoomPlugin.setMinValue(crtTime);
			};
8c88a270   Erdogan Furkan   10312 - Navigatio...
100

9f08f4eb   Benjamin Renard   Zoom in interacti...
101
102
103
104
105
			var onMaxTimeSelection = function (posX) {
				//Panel and axis context must be retrieved by using the crtContext
				var panelContext = amdaPlotComp.PlotContextManager.getPanelById(me.crtContext, panelId);
				var axisContext = amdaPlotComp.PlotContextManager.getPanelAxisById(panelContext, axis.id);
				var sourceXPos = me.toPixelOnSourceImage(posX);
8c88a270   Erdogan Furkan   10312 - Navigatio...
106
107
				var crtTimestamp = amdaPlotComp.PlotContextManager.toAxisValue(axisContext, panelContext.plotArea.x, panelContext.plotArea.x + panelContext.plotArea.width, sourceXPos);
				var crtTime = new Date(crtTimestamp * 1000);
9f08f4eb   Benjamin Renard   Zoom in interacti...
108
109
110
				crtTime = Ext.Date.add(crtTime, Ext.Date.MINUTE, crtTime.getTimezoneOffset());
				zoomPlugin.setMaxValue(crtTime);
			};
8c88a270   Erdogan Furkan   10312 - Navigatio...
111

9f08f4eb   Benjamin Renard   Zoom in interacti...
112
			//Events for zoom on a Y axis
8c88a270   Erdogan Furkan   10312 - Navigatio...
113
			var onMinYValueSelection = function (posY) {
9f08f4eb   Benjamin Renard   Zoom in interacti...
114
115
116
117
				//Panel and axis context must be retrieved by using the crtContext
				var panelContext = amdaPlotComp.PlotContextManager.getPanelById(me.crtContext, panelId);
				var axisContext = amdaPlotComp.PlotContextManager.getPanelAxisById(panelContext, axis.id);
				var sourceYPos = me.toPixelOnSourceImage(posY);
8c88a270   Erdogan Furkan   10312 - Navigatio...
118
				var crtValue = amdaPlotComp.PlotContextManager.toAxisValue(axisContext, panelContext.plotArea.y + panelContext.plotArea.height, panelContext.plotArea.y, sourceYPos);
9f08f4eb   Benjamin Renard   Zoom in interacti...
119
120
				zoomPlugin.setMinValue(crtValue);
			};
8c88a270   Erdogan Furkan   10312 - Navigatio...
121
122

			var onMaxYValueSelection = function (posY) {
9f08f4eb   Benjamin Renard   Zoom in interacti...
123
124
125
126
				//Panel and axis context must be retrieved by using the crtContext
				var panelContext = amdaPlotComp.PlotContextManager.getPanelById(me.crtContext, panelId);
				var axisContext = amdaPlotComp.PlotContextManager.getPanelAxisById(panelContext, axis.id);
				var sourceYPos = me.toPixelOnSourceImage(posY);
8c88a270   Erdogan Furkan   10312 - Navigatio...
127
				var crtValue = amdaPlotComp.PlotContextManager.toAxisValue(axisContext, panelContext.plotArea.y + panelContext.plotArea.height, panelContext.plotArea.y, sourceYPos);
9f08f4eb   Benjamin Renard   Zoom in interacti...
128
129
				zoomPlugin.setMaxValue(crtValue);
			};
8c88a270   Erdogan Furkan   10312 - Navigatio...
130

9f08f4eb   Benjamin Renard   Zoom in interacti...
131
			//Events for zoom on X axis
8c88a270   Erdogan Furkan   10312 - Navigatio...
132
			var onMinXValueSelection = function (posX) {
9f08f4eb   Benjamin Renard   Zoom in interacti...
133
134
135
136
137
138
139
				//Panel and axis context must be retrieved by using the crtContext
				var panelContext = amdaPlotComp.PlotContextManager.getPanelById(me.crtContext, panelId);
				var axisContext = amdaPlotComp.PlotContextManager.getPanelAxisById(panelContext, axis.id);
				var sourceXPos = me.toPixelOnSourceImage(posX);
				var crtValue = amdaPlotComp.PlotContextManager.toAxisValue(axisContext, panelContext.plotArea.x, panelContext.plotArea.x + panelContext.plotArea.width, sourceXPos);
				zoomPlugin.setMinValue(crtValue);
			};
8c88a270   Erdogan Furkan   10312 - Navigatio...
140
141

			var onMaxXValueSelection = function (posX) {
9f08f4eb   Benjamin Renard   Zoom in interacti...
142
143
144
145
146
147
148
				//Panel and axis context must be retrieved by using the crtContext
				var panelContext = amdaPlotComp.PlotContextManager.getPanelById(me.crtContext, panelId);
				var axisContext = amdaPlotComp.PlotContextManager.getPanelAxisById(panelContext, axis.id);
				var sourceXPos = me.toPixelOnSourceImage(posX);
				var crtValue = amdaPlotComp.PlotContextManager.toAxisValue(axisContext, panelContext.plotArea.x, panelContext.plotArea.x + panelContext.plotArea.width, sourceXPos);
				zoomPlugin.setMaxValue(crtValue);
			};
8c88a270   Erdogan Furkan   10312 - Navigatio...
149
150
151
152
153
154
155
156
157
158
159
160

			switch (axis.id) {
				case 'timeAxis':
					me.contextualMenu.add({
						text: 'Zoom on Time Axis',
						handler: function (item, e) {
							zoomPlugin.show(me.interactiveId, axis.id, panelContext.id);
							zoomPlugin.resetMinMaxValue();
							me.panelImage.startZoom(true, 0/*me.toPixelOnResultImage(panelContext.y)*/, size.height /*me.toPixelOnResultImage(panelContext.height)*/, onMinTimeSelection, onMaxTimeSelection);
						},
						scope: this
					});
535d7638   Menouard AZIB   I have added a co...
161
					//plotFunction Menu
a54cfb3f   Benjamin Renard   Merge amdadev int...
162
					/*plotFunctionItem = {
f401b3c7   Benjamin Renard   Fix
163
						text: 'Apply a Function on Interval',
535d7638   Menouard AZIB   I have added a co...
164
165
166
167
168
169
						handler: function (item, e) {
							zoomPlugin.show(me.interactiveId, axis.id, panelContext.id, true);
							zoomPlugin.resetMinMaxValue();
							me.panelImage.startZoom(true, 0, size.height, onMinTimeSelection, onMaxTimeSelection);
						},
						scope: this
a54cfb3f   Benjamin Renard   Merge amdadev int...
170
					};*/
8c88a270   Erdogan Furkan   10312 - Navigatio...
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
					insertIntervalItem = {
						text: 'Insert Interval in TimeTable or Catalog',
						handler: function (item, e) {
							zoomPlugin.show(me.interactiveId, axis.id, panelContext.id);
							zoomPlugin.resetMinMaxValue();
							me.panelImage.startZoom(true, 0/*me.toPixelOnResultImage(panelContext.y)*/, size.height /*me.toPixelOnResultImage(panelContext.height)*/, onMinTimeSelection, onMaxTimeSelection);
						},
						scope: this
					};
					break;
				case 'y-left':
					me.contextualMenu.add({
						text: 'Zoom on Y Left Axis',
						handler: function (item, e) {
							zoomPlugin.show(me.interactiveId, axis.id, panelContext.id);
							zoomPlugin.resetMinMaxValue();
							me.panelImage.startZoom(false, me.toPixelOnResultImage(panelContext.x), me.toPixelOnResultImage(panelContext.width), onMinYValueSelection, onMaxYValueSelection);
						}
					});
					break;
				case 'y-right':
					me.contextualMenu.add({
						text: 'Zoom on Y Right Axis',
						handler: function (item, e) {
							zoomPlugin.show(me.interactiveId, axis.id, panelContext.id);
							zoomPlugin.resetMinMaxValue();
							me.panelImage.startZoom(false, me.toPixelOnResultImage(panelContext.x), me.toPixelOnResultImage(panelContext.width), onMinYValueSelection, onMaxYValueSelection);
						}
					});
					break;
				case 'xaxis_id':
					me.contextualMenu.add({
						text: 'Zoom on X Axis',
						handler: function (item, e) {
							zoomPlugin.show(me.interactiveId, axis.id, panelContext.id);
							zoomPlugin.resetMinMaxValue();
							me.panelImage.startZoom(true, me.toPixelOnResultImage(panelContext.y), me.toPixelOnResultImage(panelContext.height), onMinXValueSelection, onMaxXValueSelection);
						}
					});
					break;
				case 'epochAxis':
					//Nothing to add
					break;
9f08f4eb   Benjamin Renard   Zoom in interacti...
214
			}
8c88a270   Erdogan Furkan   10312 - Navigatio...
215

9f08f4eb   Benjamin Renard   Zoom in interacti...
216
		});
8b11b1af   Benjamin Renard   Insert intervals ...
217
218
219
220
221

		if (insertIntervalItem != null) {
			me.contextualMenu.add('-');
			me.contextualMenu.add(insertIntervalItem);
		}
f401b3c7   Benjamin Renard   Fix
222
223
224
225
		if (plotFunctionItem != null) {
			me.contextualMenu.insert(0,'-');
			me.contextualMenu.insert(0, plotFunctionItem);
		}
9f08f4eb   Benjamin Renard   Zoom in interacti...
226
	},
2ea6eb0d   Benjamin Renard   Fix decimal preci...
227

8c88a270   Erdogan Furkan   10312 - Navigatio...
228
229
230
231
232
233
234
235
236
237
238
239
240
	getAxisValue: function (axis, pixelMin, pixelMax, pixelVal) {
		var val = amdaPlotComp.PlotContextManager.toAxisValue(axis, pixelMin, pixelMax, pixelVal);
		return parseFloat(val).toPrecision(5);
	},

	createPlotImage: function (resultFolder, plotFile) {
		var me = this;
		var size = this.getImageSize();
		this.panelImage = Ext.create('amdaPlotComp.PlotResultImage', {
			src: this.getImageUrl(resultFolder, plotFile),
			width: size.width,
			height: size.height,
			onMouseMove: function (x, y) {
d0b61b72   Benjamin Renard   Show coordinates ...
241
242
				if (!me.crtContext)
					return;
8c88a270   Erdogan Furkan   10312 - Navigatio...
243

d0b61b72   Benjamin Renard   Show coordinates ...
244
245
246
				var sourceXPos = me.toPixelOnSourceImage(x);
				var sourceYPos = me.toPixelOnSourceImage(y);
				var panel = amdaPlotComp.PlotContextManager.getPanel(me.crtContext, sourceXPos, sourceYPos);
2cd12bf9   Erdogan Furkan   #9326 - Showing T...
247

d0b61b72   Benjamin Renard   Show coordinates ...
248
				var text = '';
8c88a270   Erdogan Furkan   10312 - Navigatio...
249
250
				if (me.panelImage) {
					if (!panel) {
d0b61b72   Benjamin Renard   Show coordinates ...
251
252
253
						me.panelImage.resetCursor();
						text += 'No panel';
					}
8c88a270   Erdogan Furkan   10312 - Navigatio...
254
					else {
d0b61b72   Benjamin Renard   Show coordinates ...
255
256
						text += 'Panel Id : ';
						text += panel.id;
8c88a270   Erdogan Furkan   10312 - Navigatio...
257
						if (amdaPlotComp.PlotContextManager.isInPlotArea(panel, sourceXPos, sourceYPos)) {
d0b61b72   Benjamin Renard   Show coordinates ...
258
259
260
261
262
263
264
							/*me.panelImage.updateCursor(
								me.toPixelOnResultImage(panel.plotArea.x),
								me.toPixelOnResultImage(panel.plotArea.y),
								me.toPixelOnResultImage(panel.plotArea.width),
								me.toPixelOnResultImage(panel.plotArea.height),
								x, y);*/
							me.panelImage.updateCursor(
8c88a270   Erdogan Furkan   10312 - Navigatio...
265
266
267
268
269
270
								me.toPixelOnResultImage(0),
								me.toPixelOnResultImage(0),
								me.toPixelOnResultImage(me.crtContext.page.width),
								me.toPixelOnResultImage(me.crtContext.page.height),
								x, y);

d0b61b72   Benjamin Renard   Show coordinates ...
271
272
273
							var xText = '';
							var yLeftText = '';
							var yRightText = '';
2cd12bf9   Erdogan Furkan   #9326 - Showing T...
274
							var intervalText = '';
d0b61b72   Benjamin Renard   Show coordinates ...
275
							Ext.each(panel.plotArea.axes, function (axis) {
8c88a270   Erdogan Furkan   10312 - Navigatio...
276
277
278
279
								switch (axis.id) {
									case 'timeAxis':
										var crtTimestamp = amdaPlotComp.PlotContextManager.toAxisValue(axis, panel.plotArea.x, panel.plotArea.x + panel.plotArea.width, sourceXPos);
										var crtTime = new Date(crtTimestamp * 1000);
c2cc7749   Erdogan Furkan   #10098 - Modifica...
280
										intervalText = amdaPlotComp.PlotContextManager.getIntervalCoordInfo(me.crtContext, panel, crtTimestamp);
8c88a270   Erdogan Furkan   10312 - Navigatio...
281
										xText = crtTime.toJSON();
8c88a270   Erdogan Furkan   10312 - Navigatio...
282
283
284
285
286
287
288
289
290
291
292
293
294
										break;
									case 'y-left':
										yLeftText = me.getAxisValue(axis, panel.plotArea.y + panel.plotArea.height, panel.plotArea.y, sourceYPos);
										break;
									case 'y-right':
										yRightText = me.getAxisValue(axis, panel.plotArea.y + panel.plotArea.height, panel.plotArea.y, sourceYPos);
										break;
									case 'xaxis_id':
										xText = me.getAxisValue(axis, panel.plotArea.x, panel.plotArea.x + panel.plotArea.width, sourceXPos);
										break;
									case 'epochAxis':
										xText = me.getAxisValue(axis, panel.plotArea.x, panel.plotArea.x + panel.plotArea.width, sourceXPos);
										break;
d0b61b72   Benjamin Renard   Show coordinates ...
295
								}
8c88a270   Erdogan Furkan   10312 - Navigatio...
296

d0b61b72   Benjamin Renard   Show coordinates ...
297
							});
8c88a270   Erdogan Furkan   10312 - Navigatio...
298

d0b61b72   Benjamin Renard   Show coordinates ...
299
							if (xText != '')
8c88a270   Erdogan Furkan   10312 - Navigatio...
300
								text += (', X : ' + xText);
d0b61b72   Benjamin Renard   Show coordinates ...
301
							if (yLeftText != '')
8c88a270   Erdogan Furkan   10312 - Navigatio...
302
								text += (', Y Left : ' + yLeftText);
d0b61b72   Benjamin Renard   Show coordinates ...
303
							if (yRightText != '')
8c88a270   Erdogan Furkan   10312 - Navigatio...
304
								text += (', Y Right : ' + yRightText);
2cd12bf9   Erdogan Furkan   #9326 - Showing T...
305
							if (intervalText != '')
c2cc7749   Erdogan Furkan   #10098 - Modifica...
306
								text += (', ' + intervalText);
d0b61b72   Benjamin Renard   Show coordinates ...
307
308
309
310
311
312
313
						}
						else
							me.panelImage.resetCursor();
					}
				}
				me.coordinatesField.setText(text);
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
314
			onContextMenu: function (absoluteX, absoluteY, imageX, imageY) {
9f08f4eb   Benjamin Renard   Zoom in interacti...
315
316
				if (!me.crtContext)
					return;
8c88a270   Erdogan Furkan   10312 - Navigatio...
317

87658ba0   Benjamin Renard   TT Navigation in ...
318
				me.contextualMenu.removeAll(true);
8c88a270   Erdogan Furkan   10312 - Navigatio...
319

9f08f4eb   Benjamin Renard   Zoom in interacti...
320
321
322
				var sourceXPos = me.toPixelOnSourceImage(imageX);
				var sourceYPos = me.toPixelOnSourceImage(imageY);
				var panel = amdaPlotComp.PlotContextManager.getPanel(me.crtContext, sourceXPos, sourceYPos);
c2cc7749   Erdogan Furkan   #10098 - Modifica...
323
324
325
326
				var timeAxisContext = amdaPlotComp.PlotContextManager.getPanelAxisById(panel, 'timeAxis');
				if (timeAxisContext == null)
					return;
				var crtTimestamp = amdaPlotComp.PlotContextManager.toAxisValue(timeAxisContext, panel.plotArea.x, panel.plotArea.x + panel.plotArea.width, sourceXPos);
8c88a270   Erdogan Furkan   10312 - Navigatio...
327
328
329

				if (panel != null) {
					if (panel.plotArea.hasSpectro) {
c9071a43   Benjamin Renard   Add instant plot ...
330
						me.contextualMenu.add([
bab90f22   Elena.Budnik   format + #5668
331
							{
8c88a270   Erdogan Furkan   10312 - Navigatio...
332
333
								text: 'Instant cut at this position',
								handler: function () {
c2cc7749   Erdogan Furkan   #10098 - Modifica...
334

8c88a270   Erdogan Furkan   10312 - Navigatio...
335
									var crtTime = new Date(crtTimestamp * 1000);
3afa41ee   Erdogan Furkan   #10663 - Fixed bug
336
337
									//crtTime = Ext.Date.add(crtTime, Ext.Date.MINUTE, crtTime.getTimezoneOffset());
									me.callInteractivePlot({ 'action': 'instant', 'interactiveId': this.interactiveId, 'panelId': panel.id, 'time': crtTime.toISOString()});
bab90f22   Elena.Budnik   format + #5668
338
339
340
								},
								scope: me
							},
8c88a270   Erdogan Furkan   10312 - Navigatio...
341
							'-'
c9071a43   Benjamin Renard   Add instant plot ...
342
343
						]);
					}
9f08f4eb   Benjamin Renard   Zoom in interacti...
344
345
					if (amdaPlotComp.PlotContextManager.isInPlotArea(panel, sourceXPos, sourceYPos))
						me.createZoomItemsForPanel(panel.id);
c2cc7749   Erdogan Furkan   #10098 - Modifica...
346
347


9f08f4eb   Benjamin Renard   Zoom in interacti...
348
				}
8b11b1af   Benjamin Renard   Insert intervals ...
349

9f08f4eb   Benjamin Renard   Zoom in interacti...
350
351
				if (me.contextualMenu.items.getCount() > 0)
					me.contextualMenu.add('-');
8c88a270   Erdogan Furkan   10312 - Navigatio...
352

37e81bff   Benjamin Renard   Direct save of pl...
353
				me.contextualMenu.add([
bab90f22   Elena.Budnik   format + #5668
354
					{
8c88a270   Erdogan Furkan   10312 - Navigatio...
355
356
357
						text: 'Extend/Shift Time interval',
						disabled: me.isTTNavBar,
						handler: function () {
bab90f22   Elena.Budnik   format + #5668
358
							var extendShiftPlugin = this.getPlugin('plot-extendshift-plugin-id');
b39c9d1d   Benjamin Renard   Fix interactive n...
359
							extendShiftPlugin.show(me.interactiveId);
bab90f22   Elena.Budnik   format + #5668
360
361
362
363
364
365
						},
						scope: me
					},
					'-',
					{
						text: 'Save Plot',
8c88a270   Erdogan Furkan   10312 - Navigatio...
366
						handler: function () {
bab90f22   Elena.Budnik   format + #5668
367
368
							if (me.hiddenForm == null)
								me.hiddenForm = Ext.create('Ext.form.Panel', {
8c88a270   Erdogan Furkan   10312 - Navigatio...
369
									title: 'hiddenForm',
bab90f22   Elena.Budnik   format + #5668
370
371
372
373
									renderTo: Ext.getBody(),
									standardSubmit: true,
									url: 'php/downloadPlot.php',
									timeout: 120000,
8c88a270   Erdogan Furkan   10312 - Navigatio...
374
									height: 100,
bab90f22   Elena.Budnik   format + #5668
375
									width: 100,
8c88a270   Erdogan Furkan   10312 - Navigatio...
376
377
									hidden: true,
									items: []
bab90f22   Elena.Budnik   format + #5668
378
								});
37e81bff   Benjamin Renard   Direct save of pl...
379

bab90f22   Elena.Budnik   format + #5668
380
381
382
							me.hiddenForm.getForm().submit({
								params: {
									sessionId: sessionID,
8c88a270   Erdogan Furkan   10312 - Navigatio...
383
									interactiveId: me.interactiveId
bab90f22   Elena.Budnik   format + #5668
384
								},
8c88a270   Erdogan Furkan   10312 - Navigatio...
385
386
								success: function (form, action) { },
								failure: function (form, action) { }
bab90f22   Elena.Budnik   format + #5668
387
388
389
							});
						}
					}
37e81bff   Benjamin Renard   Direct save of pl...
390
				]);
8c88a270   Erdogan Furkan   10312 - Navigatio...
391

c2cc7749   Erdogan Furkan   #10098 - Modifica...
392
393
394
395
396
397
				if (amdaPlotComp.PlotContextManager.isInterval(me.crtContext, panel, crtTimestamp)) {
					var allintervalParams = amdaPlotComp.PlotContextManager.getAllIntervalParams(me.crtContext, panel, crtTimestamp);
					if (allintervalParams.length > 0) {

						var links = amdaPlotComp.PlotContextManager.getIntervalLinks(allintervalParams);
						if (links.length > 0) {
1be6ea03   Erdogan Furkan   #10098 - Final co...
398
399
							var menu = Ext.create('Ext.menu.Menu', { plain: true });
							var realLinks = amdaPlotComp.PlotContextManager.setIntervalsRef(links, menu);
c2cc7749   Erdogan Furkan   #10098 - Modifica...
400
401
402
							me.contextualMenu.add('-');
							me.contextualMenu.add([
								{
1be6ea03   Erdogan Furkan   #10098 - Final co...
403
404
									text: 'Open references (' + realLinks.length + ')',
									menu: menu,
c2cc7749   Erdogan Furkan   #10098 - Modifica...
405
406
407
408
409
410
									scope: me
								}]);
						}
					}
				}

9f08f4eb   Benjamin Renard   Zoom in interacti...
411
412
				me.contextualMenu.showAt(absoluteX, absoluteY);
			}
bab90f22   Elena.Budnik   format + #5668
413
		});
16035364   Benjamin Renard   First commit
414

bab90f22   Elena.Budnik   format + #5668
415
416
		return this.panelImage;
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
417
418

	updatePlotImage: function (configResult, newPlot) {
bab90f22   Elena.Budnik   format + #5668
419
		this.crtContext = configResult.context;
8c88a270   Erdogan Furkan   10312 - Navigatio...
420
421


bab90f22   Elena.Budnik   format + #5668
422
		this.crtTTFileIndex = configResult.ttFileIndex;
8c88a270   Erdogan Furkan   10312 - Navigatio...
423
424

		if (this.isTTNavBar != (!configResult.isInterval) || (this.isSuperposeMode != this.crtContext.page.superposeMode)) {
bab90f22   Elena.Budnik   format + #5668
425
426
427
			//Update navigation bar
			this.updateNavToolBar(!configResult.isInterval, this.crtContext.page.superposeMode);
		}
8c88a270   Erdogan Furkan   10312 - Navigatio...
428

bab90f22   Elena.Budnik   format + #5668
429
		this.updateTimeTableInfo();
8c88a270   Erdogan Furkan   10312 - Navigatio...
430

bab90f22   Elena.Budnik   format + #5668
431
		this.panelImage.setSrc(this.getImageUrl(configResult.folder, configResult.plotFile));
8c88a270   Erdogan Furkan   10312 - Navigatio...
432

bab90f22   Elena.Budnik   format + #5668
433
434
		var size = this.getImageSize();
		this.panelImage.setSize(size.width, size.height);
8c88a270   Erdogan Furkan   10312 - Navigatio...
435

bab90f22   Elena.Budnik   format + #5668
436
437
		this.panelImage.refreshMe();
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
438
439

	updateTimeTableInfo: function () {
bab90f22   Elena.Budnik   format + #5668
440
441
		if (!this.navToolBar)
			return;
8c88a270   Erdogan Furkan   10312 - Navigatio...
442
443

		var ttNameField = this.navToolBar.items.get('tt-table-' + this.interactiveId);
bab90f22   Elena.Budnik   format + #5668
444
445
		if (ttNameField)
			ttNameField.setValue(this.crtContext.page.ttName);
8c88a270   Erdogan Furkan   10312 - Navigatio...
446
447

		var ttNumberField = this.navToolBar.items.get('tt-number-' + this.interactiveId);
bab90f22   Elena.Budnik   format + #5668
448
449
		if (ttNumberField)
			ttNumberField.setValue(this.crtContext.page.ttIndex + 1);
8c88a270   Erdogan Furkan   10312 - Navigatio...
450
451

		var ttTotalField = this.navToolBar.items.get('tt-total-' + this.interactiveId);
bab90f22   Elena.Budnik   format + #5668
452
453
454
		if (ttTotalField)
			ttTotalField.setValue(this.crtContext.page.ttNbIntervals);
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
455
456

	callInteractivePlot: function (obj) {
bab90f22   Elena.Budnik   format + #5668
457
		loadMask.show(true);
8c88a270   Erdogan Furkan   10312 - Navigatio...
458

bab90f22   Elena.Budnik   format + #5668
459
		var plotModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id);
27a055f4   Benjamin Renard   Multiplot (#8314)
460
		obj['multiplot'] = this.multiplot;
8c88a270   Erdogan Furkan   10312 - Navigatio...
461

b0a1c31b   Benjamin Renard   Remove multi-plot...
462
		AmdaAction.interactivePlot(obj, function (result, e) {
bab90f22   Elena.Budnik   format + #5668
463
464
			loadMask.hide();
			var t = e.getTransaction();
8c88a270   Erdogan Furkan   10312 - Navigatio...
465
466
467
			if (e.status) {
				if (result) {
					if (result.success) {
a0db7984   Erdogan Furkan   #10663 - Done
468
						plotModule.updateInteractiveSession(result, false, obj['panelId'], obj['time']);
9f08f4eb   Benjamin Renard   Zoom in interacti...
469
470
					}
					else
8c88a270   Erdogan Furkan   10312 - Navigatio...
471
						myDesktopApp.errorMsg('Interactive action error - ' + result.message);
9f08f4eb   Benjamin Renard   Zoom in interacti...
472
473
474
475
				}
				else
					myDesktopApp.errorMsg('Cannot execute interactive action');
			}
8c88a270   Erdogan Furkan   10312 - Navigatio...
476
			else {
9f08f4eb   Benjamin Renard   Zoom in interacti...
477
				// FAILURE
8c88a270   Erdogan Furkan   10312 - Navigatio...
478
479
480
				myDesktopApp.errorMsg('Error System - ' + e.message);
			}
		}, this);
bab90f22   Elena.Budnik   format + #5668
481
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
482
483

	updateNavToolBar: function (isTimeTable, isSuperposeMode) {
bab90f22   Elena.Budnik   format + #5668
484
485
		if (this.navToolBar)
			this.navToolBar.removeAll(true);
8c88a270   Erdogan Furkan   10312 - Navigatio...
486

bab90f22   Elena.Budnik   format + #5668
487
		var commonItemsCfg = [
8c88a270   Erdogan Furkan   10312 - Navigatio...
488
489
490
491
492
493
			'-',
			{
				xtype: 'tbspacer',
				width: 20
			},
			'->',
bab90f22   Elena.Budnik   format + #5668
494
			{
8c88a270   Erdogan Furkan   10312 - Navigatio...
495
				text: 'Get HST Data',
bab90f22   Elena.Budnik   format + #5668
496
				scope: this,
8c88a270   Erdogan Furkan   10312 - Navigatio...
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
				menu: [
					{
						text: 'Giant Planet Auroral Emissions',
						scope: this,
						handler: function () {
							var me = this;
							myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.astro.id, true, function (module) {
								var startTime = new Date(me.crtContext.page.startTime * 1000);
								startTime = Ext.Date.add(startTime, Ext.Date.MINUTE, startTime.getTimezoneOffset());

								var stopTime = new Date(me.crtContext.page.stopTime * 1000);
								stopTime = Ext.Date.add(stopTime, Ext.Date.MINUTE, stopTime.getTimezoneOffset());

								module.createWindow(startTime, stopTime);
							});
						}
					}]
			}];

		if (isTimeTable) {
bab90f22   Elena.Budnik   format + #5668
517
518
519
			var navigationItemsCfg = [{
				text: 'Previous',
				scope: this,
8c88a270   Erdogan Furkan   10312 - Navigatio...
520
				handler: function () {
bab90f22   Elena.Budnik   format + #5668
521
522
					var ttFileIndex = this.crtTTFileIndex;
					var ttintervalIndex = this.crtContext.page.ttIndex;
8c88a270   Erdogan Furkan   10312 - Navigatio...
523
524
525

					if (ttintervalIndex <= 0 && ttFileIndex > 0) {
						--ttFileIndex;
bab90f22   Elena.Budnik   format + #5668
526
527
528
					}
					else
						--ttintervalIndex;
8c88a270   Erdogan Furkan   10312 - Navigatio...
529
530
					this.callInteractivePlot({ 'action': 'goto', 'interactiveId': this.interactiveId, 'ttFileIndex': ttFileIndex, 'intIndex': ttintervalIndex });
				}
bab90f22   Elena.Budnik   format + #5668
531
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
532
				'-',
bab90f22   Elena.Budnik   format + #5668
533
534
535
			{
				text: 'Next',
				scope: this,
8c88a270   Erdogan Furkan   10312 - Navigatio...
536
				handler: function () {
bab90f22   Elena.Budnik   format + #5668
537
538
					var ttFileIndex = this.crtTTFileIndex;
					var ttintervalIndex = this.crtContext.page.ttIndex;
8c88a270   Erdogan Furkan   10312 - Navigatio...
539
540
541

					if (ttintervalIndex >= this.crtContext.page.ttNbIntervals - 1) {

bab90f22   Elena.Budnik   format + #5668
542
543
544
545
546
547
						++ttFileIndex;
						ttintervalIndex = 0;
					}
					else
						++ttintervalIndex;

8c88a270   Erdogan Furkan   10312 - Navigatio...
548
					this.callInteractivePlot({ 'action': 'goto', 'interactiveId': this.interactiveId, 'ttFileIndex': ttFileIndex, 'intIndex': ttintervalIndex });
bab90f22   Elena.Budnik   format + #5668
549
550
				}
			},
535d7638   Menouard AZIB   I have added a co...
551
				'-',
8c88a270   Erdogan Furkan   10312 - Navigatio...
552
			{
46bd4591   Hacene SI HADJ MOHAND   us ok
553
554
				text: 'Use This Time Inteval',
				scope: this,
535d7638   Menouard AZIB   I have added a co...
555
556
557
558
559
560
561
				handler: function () {
					var timeObj = new Object();
					var startTime = new Date(this.crtContext.page.startTime * 1000);
					timeObj.start = Ext.Date.add(startTime, Ext.Date.MINUTE, startTime.getTimezoneOffset());

					var stopTime = new Date(this.crtContext.page.stopTime * 1000);
					timeObj.stop = Ext.Date.add(stopTime, Ext.Date.MINUTE, stopTime.getTimezoneOffset());
46bd4591   Hacene SI HADJ MOHAND   us ok
562
563

					var plotModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id);
535d7638   Menouard AZIB   I have added a co...
564
					plotModule.setTimeInterval(timeObj);
46bd4591   Hacene SI HADJ MOHAND   us ok
565
566
				}
			},
535d7638   Menouard AZIB   I have added a co...
567
568
569
				'-',
			{
				text: 'Go to Interval #',
bab90f22   Elena.Budnik   format + #5668
570
				scope: this,
8c88a270   Erdogan Furkan   10312 - Navigatio...
571
572
				handler: function (bt) {
					var ttGotoNumberField = this.navToolBar.items.get('tt-goto-number-' + this.interactiveId);
bab90f22   Elena.Budnik   format + #5668
573
574
575
576
					var goToIndex = ttGotoNumberField.getValue() - 1;
					if ((goToIndex < 0) || (goToIndex >= this.crtContext.page.ttNbIntervals))
						myDesktopApp.errorMsg('This interval number is outside of the current timeTable');
					else
8c88a270   Erdogan Furkan   10312 - Navigatio...
577
						this.callInteractivePlot({ 'action': 'goto', 'interactiveId': this.interactiveId, 'ttFileIndex': this.crtTTFileIndex, 'intIndex': goToIndex });
bab90f22   Elena.Budnik   format + #5668
578
579
580
581
				}
			},
			{
				xtype: 'numberfield',
8c88a270   Erdogan Furkan   10312 - Navigatio...
582
583
584
				id: 'tt-goto-number-' + this.interactiveId,
				hideTrigger: true,
				width: 50,
bab90f22   Elena.Budnik   format + #5668
585
586
				minValue: 1
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
587
588
589
590
				' ',
				' ',
				' ',
			{
bab90f22   Elena.Budnik   format + #5668
591
				xtype: 'textfield',
8c88a270   Erdogan Furkan   10312 - Navigatio...
592
				id: 'tt-table-' + this.interactiveId,
bab90f22   Elena.Budnik   format + #5668
593
594
595
596
				labelAlign: 'right',
				labelWidth: 30,
				fieldLabel: 'Table',
				width: 130,
8c88a270   Erdogan Furkan   10312 - Navigatio...
597
				disabled: true
bab90f22   Elena.Budnik   format + #5668
598
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
599
			{
bab90f22   Elena.Budnik   format + #5668
600
				xtype: 'textfield',
8c88a270   Erdogan Furkan   10312 - Navigatio...
601
				id: 'tt-number-' + this.interactiveId,
bab90f22   Elena.Budnik   format + #5668
602
603
604
605
				labelAlign: 'right',
				labelWidth: 30,
				fieldLabel: 'Int #',
				width: 90,
8c88a270   Erdogan Furkan   10312 - Navigatio...
606
				disabled: true
bab90f22   Elena.Budnik   format + #5668
607
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
608
609
610
			{
				xtype: 'textfield',
				id: 'tt-total-' + this.interactiveId,
bab90f22   Elena.Budnik   format + #5668
611
612
613
614
				labelAlign: 'right',
				labelWidth: 30,
				fieldLabel: 'Total',
				width: 90,
8c88a270   Erdogan Furkan   10312 - Navigatio...
615
				disabled: true
bab90f22   Elena.Budnik   format + #5668
616
617
			}];
		}
8c88a270   Erdogan Furkan   10312 - Navigatio...
618
		else {
bab90f22   Elena.Budnik   format + #5668
619
			var navigationItemsCfg = [
8c88a270   Erdogan Furkan   10312 - Navigatio...
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
				{
					text: 'Backward',
					scope: this,
					handler: function () {
						this.callInteractivePlot({ 'action': 'backward', 'interactiveId': this.interactiveId });
					}
				},
				'-',
				{
					text: '1/2 Backward',
					scope: this,
					handler: function () {
						this.callInteractivePlot({ 'action': 'halfbackward', 'interactiveId': this.interactiveId });
					}
				},
				'-',
				{
					text: '1/4 Backward',
					scope: this,
					handler: function () {
						this.callInteractivePlot({ 'action': 'quarterbackward', 'interactiveId': this.interactiveId });
					}
				},
				'-',
				{
					text: '1/4 Forward',
					scope: this,
					handler: function () {
						this.callInteractivePlot({ 'action': 'quarterforward', 'interactiveId': this.interactiveId });
					}
				},
				'-',
				{
					text: '1/2 Forward',
					scope: this,
					handler: function () {
						this.callInteractivePlot({ 'action': 'halfforward', 'interactiveId': this.interactiveId });
					}
				},
				'-',
				{
					text: 'Forward',
					scope: this,
					handler: function () {
						this.callInteractivePlot({ 'action': 'forward', 'interactiveId': this.interactiveId });
					}
				}];
bab90f22   Elena.Budnik   format + #5668
667
668
669
		}

		var toolItemsCfg = navigationItemsCfg;
8c88a270   Erdogan Furkan   10312 - Navigatio...
670
		Ext.each(commonItemsCfg, function (item) {
bab90f22   Elena.Budnik   format + #5668
671
672
			toolItemsCfg.push(item);
		});
8c88a270   Erdogan Furkan   10312 - Navigatio...
673
674

		if (!this.navToolBar) {
bab90f22   Elena.Budnik   format + #5668
675
676
			var toolConfig = {
				dock: 'top',
8c88a270   Erdogan Furkan   10312 - Navigatio...
677
				items: toolItemsCfg
bab90f22   Elena.Budnik   format + #5668
678
679
			};

8c88a270   Erdogan Furkan   10312 - Navigatio...
680
			this.navToolBar = Ext.create('Ext.toolbar.Toolbar', toolConfig);
bab90f22   Elena.Budnik   format + #5668
681
682
683
684
685
686
687
688
		}
		else
			this.navToolBar.add(toolItemsCfg);

		this.navToolBar.setDisabled(isSuperposeMode);

		this.isTTNavBar = isTimeTable;
		this.isSuperposeMode = isSuperposeMode;
8c88a270   Erdogan Furkan   10312 - Navigatio...
689
690
691
	},

	init: function (configResult) {
bab90f22   Elena.Budnik   format + #5668
692
		this.crtContext = configResult.context;
b39c9d1d   Benjamin Renard   Fix interactive n...
693
		this.interactiveId = configResult.interactiveId;
27a055f4   Benjamin Renard   Multiplot (#8314)
694
		this.multiplot = (configResult.multiplot == true);
bab90f22   Elena.Budnik   format + #5668
695
696
697

		this.coordinatesField = new Ext.toolbar.TextItem({
			width: 300,
8c88a270   Erdogan Furkan   10312 - Navigatio...
698
			text: ''
bab90f22   Elena.Budnik   format + #5668
699
700
701
		});

		this.sliderPage = new Ext.slider.Single({
8c88a270   Erdogan Furkan   10312 - Navigatio...
702
703
704
705
706
707
708
709
710
711
712
713
714
715
			width: 130,
			value: 75,
			increment: 5,
			minValue: 50,
			maxValue: 100,
			fieldLabel: 'Resize',
			labelWidth: 40,
			listeners: {
				scope: this,
				changecomplete: function (s, v) {
					var zoomPlugin = this.getPlugin('plot-zoom-plugin-id');
					zoomPlugin.close();
					var size = this.getImageSize();
					this.panelImage.width = size.width;
bab90f22   Elena.Budnik   format + #5668
716
717
					this.panelImage.height = size.height;
					this.panelImage.doComponentLayout();
8c88a270   Erdogan Furkan   10312 - Navigatio...
718
					this.fireEvent('pagesize', this, v);
bab90f22   Elena.Budnik   format + #5668
719
				}
8c88a270   Erdogan Furkan   10312 - Navigatio...
720
721
722
			}
		});

bab90f22   Elena.Budnik   format + #5668
723
724
725
726
		var mouseToolbar = {
			xtype: 'toolbar',
			height: 25,
			dock: 'bottom',
8c88a270   Erdogan Furkan   10312 - Navigatio...
727
			items: [
bab90f22   Elena.Budnik   format + #5668
728
729
730
731
732
				this.coordinatesField,
				'->',
				this.sliderPage
			]
		};
8c88a270   Erdogan Furkan   10312 - Navigatio...
733

bab90f22   Elena.Budnik   format + #5668
734
735
736
737
738
739
740
741
742
743
		this.contextualMenu = Ext.create('Ext.menu.Menu', {
			width: 200,
			plain: true,
			items: []
		});

		this.updateNavToolBar(!configResult.isInterval, this.crtContext.page.superposeMode);

		this.updateTimeTableInfo();

bab90f22   Elena.Budnik   format + #5668
744
		var plotResultTabPanelConfig = {
8c88a270   Erdogan Furkan   10312 - Navigatio...
745
746
747
			preventHeader: true,
			autoScroll: true,
			items: [this.createPlotImage(configResult.folder, configResult.plotFile)],
bab90f22   Elena.Budnik   format + #5668
748
749
			dockedItems: [this.navToolBar, mouseToolbar],
			plugins: [
8c88a270   Erdogan Furkan   10312 - Navigatio...
750
751
752
753
754
755
756
				{
					ptype: 'plotZoomPlugin',
					pluginId: 'plot-zoom-plugin-id'
				},
				{
					ptype: 'plotExtendShiftPlugin',
					pluginId: 'plot-extendshift-plugin-id'
8c88a270   Erdogan Furkan   10312 - Navigatio...
757
				}],
bab90f22   Elena.Budnik   format + #5668
758
			listeners: {
8c88a270   Erdogan Furkan   10312 - Navigatio...
759
760
				scope: this,
				destroy: function () {
bab90f22   Elena.Budnik   format + #5668
761
762
763
764
765
766
					var zoomPlugin = this.getPlugin('plot-zoom-plugin-id');
					if (zoomPlugin)
						zoomPlugin.close();
					var exttendShiftPlugin = this.getPlugin('plot-extendshift-plugin-id');
					if (exttendShiftPlugin)
						exttendShiftPlugin.close();
bab90f22   Elena.Budnik   format + #5668
767
768
769
				}
			}
		};
8c88a270   Erdogan Furkan   10312 - Navigatio...
770
771

		Ext.apply(this, plotResultTabPanelConfig);
bab90f22   Elena.Budnik   format + #5668
772
773
	}
});