Blame view

js/app/views/PlotTabResultUI.js 23.7 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: '',
8c88a270   Erdogan Furkan   10312 - Navigatio...
32

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

	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
49
50
		if (!this.crtContext)
			return {
8c88a270   Erdogan Furkan   10312 - Navigatio...
51
52
				width: 0,
				height: 0
bab90f22   Elena.Budnik   format + #5668
53
			};
8c88a270   Erdogan Furkan   10312 - Navigatio...
54
55
56
57
58

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

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

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

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

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

9f08f4eb   Benjamin Renard   Zoom in interacti...
78
		var panelContext = amdaPlotComp.PlotContextManager.getPanelById(this.crtContext, panelId);
caff798e   Benjamin Renard   Fix zoom bar for ...
79
		var size = this.getImageSize();
8c88a270   Erdogan Furkan   10312 - Navigatio...
80

9f08f4eb   Benjamin Renard   Zoom in interacti...
81
		var me = this;
8b11b1af   Benjamin Renard   Insert intervals ...
82
		var insertIntervalItem = null;
9f08f4eb   Benjamin Renard   Zoom in interacti...
83
84
85
86
87
88
89
		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...
90
91
				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...
92
93
94
				crtTime = Ext.Date.add(crtTime, Ext.Date.MINUTE, crtTime.getTimezoneOffset());
				zoomPlugin.setMinValue(crtTime);
			};
8c88a270   Erdogan Furkan   10312 - Navigatio...
95

9f08f4eb   Benjamin Renard   Zoom in interacti...
96
97
98
99
100
			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...
101
102
				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...
103
104
105
				crtTime = Ext.Date.add(crtTime, Ext.Date.MINUTE, crtTime.getTimezoneOffset());
				zoomPlugin.setMaxValue(crtTime);
			};
8c88a270   Erdogan Furkan   10312 - Navigatio...
106

9f08f4eb   Benjamin Renard   Zoom in interacti...
107
			//Events for zoom on a Y axis
8c88a270   Erdogan Furkan   10312 - Navigatio...
108
			var onMinYValueSelection = function (posY) {
9f08f4eb   Benjamin Renard   Zoom in interacti...
109
110
111
112
				//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...
113
				var crtValue = amdaPlotComp.PlotContextManager.toAxisValue(axisContext, panelContext.plotArea.y + panelContext.plotArea.height, panelContext.plotArea.y, sourceYPos);
9f08f4eb   Benjamin Renard   Zoom in interacti...
114
115
				zoomPlugin.setMinValue(crtValue);
			};
8c88a270   Erdogan Furkan   10312 - Navigatio...
116
117

			var onMaxYValueSelection = function (posY) {
9f08f4eb   Benjamin Renard   Zoom in interacti...
118
119
120
121
				//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...
122
				var crtValue = amdaPlotComp.PlotContextManager.toAxisValue(axisContext, panelContext.plotArea.y + panelContext.plotArea.height, panelContext.plotArea.y, sourceYPos);
9f08f4eb   Benjamin Renard   Zoom in interacti...
123
124
				zoomPlugin.setMaxValue(crtValue);
			};
8c88a270   Erdogan Furkan   10312 - Navigatio...
125

9f08f4eb   Benjamin Renard   Zoom in interacti...
126
			//Events for zoom on X axis
8c88a270   Erdogan Furkan   10312 - Navigatio...
127
			var onMinXValueSelection = function (posX) {
9f08f4eb   Benjamin Renard   Zoom in interacti...
128
129
130
131
132
133
134
				//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...
135
136

			var onMaxXValueSelection = function (posX) {
9f08f4eb   Benjamin Renard   Zoom in interacti...
137
138
139
140
141
142
143
				//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...
144
145
146
147
148
149
150
151
152
153
154
155

			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...
156
157
158
159
160
161
162
163
164
165
					//plotFunction Menu
					me.contextualMenu.add({
						text: 'Appliquer une Transformation',
						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
					});
8c88a270   Erdogan Furkan   10312 - Navigatio...
166
167
168
169
170
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
					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...
209
			}
8c88a270   Erdogan Furkan   10312 - Navigatio...
210

9f08f4eb   Benjamin Renard   Zoom in interacti...
211
		});
8b11b1af   Benjamin Renard   Insert intervals ...
212
213
214
215
216

		if (insertIntervalItem != null) {
			me.contextualMenu.add('-');
			me.contextualMenu.add(insertIntervalItem);
		}
9f08f4eb   Benjamin Renard   Zoom in interacti...
217
	},
2ea6eb0d   Benjamin Renard   Fix decimal preci...
218

8c88a270   Erdogan Furkan   10312 - Navigatio...
219
220
221
222
223
224
225
226
227
228
229
230
231
	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 ...
232
233
				if (!me.crtContext)
					return;
8c88a270   Erdogan Furkan   10312 - Navigatio...
234

d0b61b72   Benjamin Renard   Show coordinates ...
235
236
237
				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...
238

d0b61b72   Benjamin Renard   Show coordinates ...
239
				var text = '';
8c88a270   Erdogan Furkan   10312 - Navigatio...
240
241
				if (me.panelImage) {
					if (!panel) {
d0b61b72   Benjamin Renard   Show coordinates ...
242
243
244
						me.panelImage.resetCursor();
						text += 'No panel';
					}
8c88a270   Erdogan Furkan   10312 - Navigatio...
245
					else {
d0b61b72   Benjamin Renard   Show coordinates ...
246
247
						text += 'Panel Id : ';
						text += panel.id;
8c88a270   Erdogan Furkan   10312 - Navigatio...
248
						if (amdaPlotComp.PlotContextManager.isInPlotArea(panel, sourceXPos, sourceYPos)) {
d0b61b72   Benjamin Renard   Show coordinates ...
249
250
251
252
253
254
255
							/*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...
256
257
258
259
260
261
								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 ...
262
263
264
							var xText = '';
							var yLeftText = '';
							var yRightText = '';
2cd12bf9   Erdogan Furkan   #9326 - Showing T...
265
							var intervalText = '';
d0b61b72   Benjamin Renard   Show coordinates ...
266
							Ext.each(panel.plotArea.axes, function (axis) {
8c88a270   Erdogan Furkan   10312 - Navigatio...
267
268
269
270
								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...
271
										intervalText = amdaPlotComp.PlotContextManager.getIntervalCoordInfo(me.crtContext, panel, crtTimestamp);
8c88a270   Erdogan Furkan   10312 - Navigatio...
272
										xText = crtTime.toJSON();
8c88a270   Erdogan Furkan   10312 - Navigatio...
273
274
275
276
277
278
279
280
281
282
283
284
285
										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 ...
286
								}
8c88a270   Erdogan Furkan   10312 - Navigatio...
287

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

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

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

9f08f4eb   Benjamin Renard   Zoom in interacti...
311
312
313
				var sourceXPos = me.toPixelOnSourceImage(imageX);
				var sourceYPos = me.toPixelOnSourceImage(imageY);
				var panel = amdaPlotComp.PlotContextManager.getPanel(me.crtContext, sourceXPos, sourceYPos);
c2cc7749   Erdogan Furkan   #10098 - Modifica...
314
315
316
317
				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...
318
319
320

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

8c88a270   Erdogan Furkan   10312 - Navigatio...
326
									var crtTime = new Date(crtTimestamp * 1000);
bab90f22   Elena.Budnik   format + #5668
327
									crtTime = Ext.Date.add(crtTime, Ext.Date.MINUTE, crtTime.getTimezoneOffset());
8c88a270   Erdogan Furkan   10312 - Navigatio...
328
									me.callInteractivePlot({ 'action': 'instant', 'interactiveId': this.interactiveId, 'panelId': panel.id, 'time': crtTime });
bab90f22   Elena.Budnik   format + #5668
329
330
331
								},
								scope: me
							},
8c88a270   Erdogan Furkan   10312 - Navigatio...
332
							'-'
c9071a43   Benjamin Renard   Add instant plot ...
333
334
						]);
					}
9f08f4eb   Benjamin Renard   Zoom in interacti...
335
336
					if (amdaPlotComp.PlotContextManager.isInPlotArea(panel, sourceXPos, sourceYPos))
						me.createZoomItemsForPanel(panel.id);
c2cc7749   Erdogan Furkan   #10098 - Modifica...
337
338


9f08f4eb   Benjamin Renard   Zoom in interacti...
339
				}
8b11b1af   Benjamin Renard   Insert intervals ...
340

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

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

bab90f22   Elena.Budnik   format + #5668
371
372
373
							me.hiddenForm.getForm().submit({
								params: {
									sessionId: sessionID,
8c88a270   Erdogan Furkan   10312 - Navigatio...
374
									interactiveId: me.interactiveId
bab90f22   Elena.Budnik   format + #5668
375
								},
8c88a270   Erdogan Furkan   10312 - Navigatio...
376
377
								success: function (form, action) { },
								failure: function (form, action) { }
bab90f22   Elena.Budnik   format + #5668
378
379
380
							});
						}
					}
37e81bff   Benjamin Renard   Direct save of pl...
381
				]);
8c88a270   Erdogan Furkan   10312 - Navigatio...
382

c2cc7749   Erdogan Furkan   #10098 - Modifica...
383
384
385
386
387
388
				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...
389
390
							var menu = Ext.create('Ext.menu.Menu', { plain: true });
							var realLinks = amdaPlotComp.PlotContextManager.setIntervalsRef(links, menu);
c2cc7749   Erdogan Furkan   #10098 - Modifica...
391
392
393
							me.contextualMenu.add('-');
							me.contextualMenu.add([
								{
1be6ea03   Erdogan Furkan   #10098 - Final co...
394
395
									text: 'Open references (' + realLinks.length + ')',
									menu: menu,
c2cc7749   Erdogan Furkan   #10098 - Modifica...
396
397
398
399
400
401
									scope: me
								}]);
						}
					}
				}

9f08f4eb   Benjamin Renard   Zoom in interacti...
402
403
				me.contextualMenu.showAt(absoluteX, absoluteY);
			}
bab90f22   Elena.Budnik   format + #5668
404
		});
16035364   Benjamin Renard   First commit
405

bab90f22   Elena.Budnik   format + #5668
406
407
		return this.panelImage;
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
408
409

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


bab90f22   Elena.Budnik   format + #5668
413
		this.crtTTFileIndex = configResult.ttFileIndex;
8c88a270   Erdogan Furkan   10312 - Navigatio...
414
415

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

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

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

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

bab90f22   Elena.Budnik   format + #5668
427
428
		this.panelImage.refreshMe();
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
429
430

	updateTimeTableInfo: function () {
bab90f22   Elena.Budnik   format + #5668
431
432
		if (!this.navToolBar)
			return;
8c88a270   Erdogan Furkan   10312 - Navigatio...
433
434

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

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

		var ttTotalField = this.navToolBar.items.get('tt-total-' + this.interactiveId);
bab90f22   Elena.Budnik   format + #5668
443
444
445
		if (ttTotalField)
			ttTotalField.setValue(this.crtContext.page.ttNbIntervals);
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
446
447

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

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

b0a1c31b   Benjamin Renard   Remove multi-plot...
453
		AmdaAction.interactivePlot(obj, function (result, e) {
bab90f22   Elena.Budnik   format + #5668
454
455
			loadMask.hide();
			var t = e.getTransaction();
8c88a270   Erdogan Furkan   10312 - Navigatio...
456
457
458
			if (e.status) {
				if (result) {
					if (result.success) {
488b1401   Benjamin Renard   Interactive multi...
459
						plotModule.updateInteractiveSession(result, false);
9f08f4eb   Benjamin Renard   Zoom in interacti...
460
461
					}
					else
8c88a270   Erdogan Furkan   10312 - Navigatio...
462
						myDesktopApp.errorMsg('Interactive action error - ' + result.message);
9f08f4eb   Benjamin Renard   Zoom in interacti...
463
464
465
466
				}
				else
					myDesktopApp.errorMsg('Cannot execute interactive action');
			}
8c88a270   Erdogan Furkan   10312 - Navigatio...
467
			else {
9f08f4eb   Benjamin Renard   Zoom in interacti...
468
				// FAILURE
8c88a270   Erdogan Furkan   10312 - Navigatio...
469
470
471
				myDesktopApp.errorMsg('Error System - ' + e.message);
			}
		}, this);
bab90f22   Elena.Budnik   format + #5668
472
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
473
474

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

bab90f22   Elena.Budnik   format + #5668
478
		var commonItemsCfg = [
8c88a270   Erdogan Furkan   10312 - Navigatio...
479
480
481
482
483
484
			'-',
			{
				xtype: 'tbspacer',
				width: 20
			},
			'->',
bab90f22   Elena.Budnik   format + #5668
485
			{
8c88a270   Erdogan Furkan   10312 - Navigatio...
486
				text: 'Get HST Data',
bab90f22   Elena.Budnik   format + #5668
487
				scope: this,
8c88a270   Erdogan Furkan   10312 - Navigatio...
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
				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
508
509
510
			var navigationItemsCfg = [{
				text: 'Previous',
				scope: this,
8c88a270   Erdogan Furkan   10312 - Navigatio...
511
				handler: function () {
bab90f22   Elena.Budnik   format + #5668
512
513
					var ttFileIndex = this.crtTTFileIndex;
					var ttintervalIndex = this.crtContext.page.ttIndex;
8c88a270   Erdogan Furkan   10312 - Navigatio...
514
515
516

					if (ttintervalIndex <= 0 && ttFileIndex > 0) {
						--ttFileIndex;
bab90f22   Elena.Budnik   format + #5668
517
518
519
					}
					else
						--ttintervalIndex;
8c88a270   Erdogan Furkan   10312 - Navigatio...
520
521
					this.callInteractivePlot({ 'action': 'goto', 'interactiveId': this.interactiveId, 'ttFileIndex': ttFileIndex, 'intIndex': ttintervalIndex });
				}
bab90f22   Elena.Budnik   format + #5668
522
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
523
				'-',
bab90f22   Elena.Budnik   format + #5668
524
525
526
			{
				text: 'Next',
				scope: this,
8c88a270   Erdogan Furkan   10312 - Navigatio...
527
				handler: function () {
bab90f22   Elena.Budnik   format + #5668
528
529
					var ttFileIndex = this.crtTTFileIndex;
					var ttintervalIndex = this.crtContext.page.ttIndex;
8c88a270   Erdogan Furkan   10312 - Navigatio...
530
531
532

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

bab90f22   Elena.Budnik   format + #5668
533
534
535
536
537
538
						++ttFileIndex;
						ttintervalIndex = 0;
					}
					else
						++ttintervalIndex;

8c88a270   Erdogan Furkan   10312 - Navigatio...
539
					this.callInteractivePlot({ 'action': 'goto', 'interactiveId': this.interactiveId, 'ttFileIndex': ttFileIndex, 'intIndex': ttintervalIndex });
bab90f22   Elena.Budnik   format + #5668
540
541
				}
			},
535d7638   Menouard AZIB   I have added a co...
542
				'-',
8c88a270   Erdogan Furkan   10312 - Navigatio...
543
			{
46bd4591   Hacene SI HADJ MOHAND   us ok
544
545
				text: 'Use This Time Inteval',
				scope: this,
535d7638   Menouard AZIB   I have added a co...
546
547
548
549
550
551
552
				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
553
554

					var plotModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id);
535d7638   Menouard AZIB   I have added a co...
555
					plotModule.setTimeInterval(timeObj);
46bd4591   Hacene SI HADJ MOHAND   us ok
556
557
				}
			},
535d7638   Menouard AZIB   I have added a co...
558
559
560
				'-',
			{
				text: 'Go to Interval #',
bab90f22   Elena.Budnik   format + #5668
561
				scope: this,
8c88a270   Erdogan Furkan   10312 - Navigatio...
562
563
				handler: function (bt) {
					var ttGotoNumberField = this.navToolBar.items.get('tt-goto-number-' + this.interactiveId);
bab90f22   Elena.Budnik   format + #5668
564
565
566
567
					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...
568
						this.callInteractivePlot({ 'action': 'goto', 'interactiveId': this.interactiveId, 'ttFileIndex': this.crtTTFileIndex, 'intIndex': goToIndex });
bab90f22   Elena.Budnik   format + #5668
569
570
571
572
				}
			},
			{
				xtype: 'numberfield',
8c88a270   Erdogan Furkan   10312 - Navigatio...
573
574
575
				id: 'tt-goto-number-' + this.interactiveId,
				hideTrigger: true,
				width: 50,
bab90f22   Elena.Budnik   format + #5668
576
577
				minValue: 1
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
578
579
580
581
				' ',
				' ',
				' ',
			{
bab90f22   Elena.Budnik   format + #5668
582
				xtype: 'textfield',
8c88a270   Erdogan Furkan   10312 - Navigatio...
583
				id: 'tt-table-' + this.interactiveId,
bab90f22   Elena.Budnik   format + #5668
584
585
586
587
				labelAlign: 'right',
				labelWidth: 30,
				fieldLabel: 'Table',
				width: 130,
8c88a270   Erdogan Furkan   10312 - Navigatio...
588
				disabled: true
bab90f22   Elena.Budnik   format + #5668
589
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
590
			{
bab90f22   Elena.Budnik   format + #5668
591
				xtype: 'textfield',
8c88a270   Erdogan Furkan   10312 - Navigatio...
592
				id: 'tt-number-' + this.interactiveId,
bab90f22   Elena.Budnik   format + #5668
593
594
595
596
				labelAlign: 'right',
				labelWidth: 30,
				fieldLabel: 'Int #',
				width: 90,
8c88a270   Erdogan Furkan   10312 - Navigatio...
597
				disabled: true
bab90f22   Elena.Budnik   format + #5668
598
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
599
600
601
			{
				xtype: 'textfield',
				id: 'tt-total-' + this.interactiveId,
bab90f22   Elena.Budnik   format + #5668
602
603
604
605
				labelAlign: 'right',
				labelWidth: 30,
				fieldLabel: 'Total',
				width: 90,
8c88a270   Erdogan Furkan   10312 - Navigatio...
606
				disabled: true
bab90f22   Elena.Budnik   format + #5668
607
608
			}];
		}
8c88a270   Erdogan Furkan   10312 - Navigatio...
609
		else {
bab90f22   Elena.Budnik   format + #5668
610
			var navigationItemsCfg = [
8c88a270   Erdogan Furkan   10312 - Navigatio...
611
612
613
614
615
616
617
618
619
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
				{
					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
658
659
660
		}

		var toolItemsCfg = navigationItemsCfg;
8c88a270   Erdogan Furkan   10312 - Navigatio...
661
		Ext.each(commonItemsCfg, function (item) {
bab90f22   Elena.Budnik   format + #5668
662
663
			toolItemsCfg.push(item);
		});
8c88a270   Erdogan Furkan   10312 - Navigatio...
664
665

		if (!this.navToolBar) {
bab90f22   Elena.Budnik   format + #5668
666
667
			var toolConfig = {
				dock: 'top',
8c88a270   Erdogan Furkan   10312 - Navigatio...
668
				items: toolItemsCfg
bab90f22   Elena.Budnik   format + #5668
669
670
			};

8c88a270   Erdogan Furkan   10312 - Navigatio...
671
			this.navToolBar = Ext.create('Ext.toolbar.Toolbar', toolConfig);
bab90f22   Elena.Budnik   format + #5668
672
673
674
675
676
677
678
679
		}
		else
			this.navToolBar.add(toolItemsCfg);

		this.navToolBar.setDisabled(isSuperposeMode);

		this.isTTNavBar = isTimeTable;
		this.isSuperposeMode = isSuperposeMode;
8c88a270   Erdogan Furkan   10312 - Navigatio...
680
681
682
	},

	init: function (configResult) {
bab90f22   Elena.Budnik   format + #5668
683
		this.crtContext = configResult.context;
b39c9d1d   Benjamin Renard   Fix interactive n...
684
		this.interactiveId = configResult.interactiveId;
27a055f4   Benjamin Renard   Multiplot (#8314)
685
		this.multiplot = (configResult.multiplot == true);
bab90f22   Elena.Budnik   format + #5668
686
687
688

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

		this.sliderPage = new Ext.slider.Single({
8c88a270   Erdogan Furkan   10312 - Navigatio...
693
694
695
696
697
698
699
700
701
702
703
704
705
706
			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
707
708
					this.panelImage.height = size.height;
					this.panelImage.doComponentLayout();
8c88a270   Erdogan Furkan   10312 - Navigatio...
709
					this.fireEvent('pagesize', this, v);
bab90f22   Elena.Budnik   format + #5668
710
				}
8c88a270   Erdogan Furkan   10312 - Navigatio...
711
712
713
			}
		});

bab90f22   Elena.Budnik   format + #5668
714
715
716
717
		var mouseToolbar = {
			xtype: 'toolbar',
			height: 25,
			dock: 'bottom',
8c88a270   Erdogan Furkan   10312 - Navigatio...
718
			items: [
bab90f22   Elena.Budnik   format + #5668
719
720
721
722
723
				this.coordinatesField,
				'->',
				this.sliderPage
			]
		};
8c88a270   Erdogan Furkan   10312 - Navigatio...
724

bab90f22   Elena.Budnik   format + #5668
725
726
727
728
729
730
731
732
733
734
		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
735
		var plotResultTabPanelConfig = {
8c88a270   Erdogan Furkan   10312 - Navigatio...
736
737
738
			preventHeader: true,
			autoScroll: true,
			items: [this.createPlotImage(configResult.folder, configResult.plotFile)],
bab90f22   Elena.Budnik   format + #5668
739
740
			dockedItems: [this.navToolBar, mouseToolbar],
			plugins: [
8c88a270   Erdogan Furkan   10312 - Navigatio...
741
742
743
744
745
746
747
				{
					ptype: 'plotZoomPlugin',
					pluginId: 'plot-zoom-plugin-id'
				},
				{
					ptype: 'plotExtendShiftPlugin',
					pluginId: 'plot-extendshift-plugin-id'
8c88a270   Erdogan Furkan   10312 - Navigatio...
748
				}],
bab90f22   Elena.Budnik   format + #5668
749
			listeners: {
8c88a270   Erdogan Furkan   10312 - Navigatio...
750
751
				scope: this,
				destroy: function () {
bab90f22   Elena.Budnik   format + #5668
752
753
754
755
756
757
					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
758
759
760
				}
			}
		};
8c88a270   Erdogan Furkan   10312 - Navigatio...
761
762

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