Blame view

js/app/views/PlotTabResultUI.js 23 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
19
20
21
	alias: 'widget.plotTabResult',

	requires: [
		'amdaPlotComp.PlotZoomPlug',
		'amdaPlotComp.PlotExtendShiftPlug',
		'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
156
157
158
159
160
161
162
163
164
165
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

			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
					});
					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...
199
			}
8c88a270   Erdogan Furkan   10312 - Navigatio...
200

9f08f4eb   Benjamin Renard   Zoom in interacti...
201
		});
8b11b1af   Benjamin Renard   Insert intervals ...
202
203
204
205
206

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

8c88a270   Erdogan Furkan   10312 - Navigatio...
209
210
211
212
213
214
215
216
217
218
219
220
221
	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 ...
222
223
				if (!me.crtContext)
					return;
8c88a270   Erdogan Furkan   10312 - Navigatio...
224

d0b61b72   Benjamin Renard   Show coordinates ...
225
226
227
228
				var sourceXPos = me.toPixelOnSourceImage(x);
				var sourceYPos = me.toPixelOnSourceImage(y);
				var panel = amdaPlotComp.PlotContextManager.getPanel(me.crtContext, sourceXPos, sourceYPos);
				var text = '';
8c88a270   Erdogan Furkan   10312 - Navigatio...
229
230
				if (me.panelImage) {
					if (!panel) {
d0b61b72   Benjamin Renard   Show coordinates ...
231
232
233
						me.panelImage.resetCursor();
						text += 'No panel';
					}
8c88a270   Erdogan Furkan   10312 - Navigatio...
234
					else {
d0b61b72   Benjamin Renard   Show coordinates ...
235
236
						text += 'Panel Id : ';
						text += panel.id;
8c88a270   Erdogan Furkan   10312 - Navigatio...
237
						if (amdaPlotComp.PlotContextManager.isInPlotArea(panel, sourceXPos, sourceYPos)) {
d0b61b72   Benjamin Renard   Show coordinates ...
238
239
240
241
242
243
244
							/*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...
245
246
247
248
249
250
								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 ...
251
252
253
254
							var xText = '';
							var yLeftText = '';
							var yRightText = '';
							Ext.each(panel.plotArea.axes, function (axis) {
8c88a270   Erdogan Furkan   10312 - Navigatio...
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
								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);
										xText = crtTime.toJSON();
										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 ...
273
								}
8c88a270   Erdogan Furkan   10312 - Navigatio...
274

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

d0b61b72   Benjamin Renard   Show coordinates ...
277
							if (xText != '')
8c88a270   Erdogan Furkan   10312 - Navigatio...
278
								text += (', X : ' + xText);
d0b61b72   Benjamin Renard   Show coordinates ...
279
							if (yLeftText != '')
8c88a270   Erdogan Furkan   10312 - Navigatio...
280
								text += (', Y Left : ' + yLeftText);
d0b61b72   Benjamin Renard   Show coordinates ...
281
							if (yRightText != '')
8c88a270   Erdogan Furkan   10312 - Navigatio...
282
								text += (', Y Right : ' + yRightText);
d0b61b72   Benjamin Renard   Show coordinates ...
283
284
285
286
287
288
289
						}
						else
							me.panelImage.resetCursor();
					}
				}
				me.coordinatesField.setText(text);
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
290
			onContextMenu: function (absoluteX, absoluteY, imageX, imageY) {
9f08f4eb   Benjamin Renard   Zoom in interacti...
291
292
				if (!me.crtContext)
					return;
8c88a270   Erdogan Furkan   10312 - Navigatio...
293

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

9f08f4eb   Benjamin Renard   Zoom in interacti...
296
297
298
				var sourceXPos = me.toPixelOnSourceImage(imageX);
				var sourceYPos = me.toPixelOnSourceImage(imageY);
				var panel = amdaPlotComp.PlotContextManager.getPanel(me.crtContext, sourceXPos, sourceYPos);
8c88a270   Erdogan Furkan   10312 - Navigatio...
299
300
301

				if (panel != null) {
					if (panel.plotArea.hasSpectro) {
c9071a43   Benjamin Renard   Add instant plot ...
302
						me.contextualMenu.add([
bab90f22   Elena.Budnik   format + #5668
303
							{
8c88a270   Erdogan Furkan   10312 - Navigatio...
304
305
								text: 'Instant cut at this position',
								handler: function () {
bab90f22   Elena.Budnik   format + #5668
306
307
308
									var timeAxisContext = amdaPlotComp.PlotContextManager.getPanelAxisById(panel, 'timeAxis');
									if (timeAxisContext == null)
										return;
8c88a270   Erdogan Furkan   10312 - Navigatio...
309
310
									var crtTimestamp = amdaPlotComp.PlotContextManager.toAxisValue(timeAxisContext, panel.plotArea.x, panel.plotArea.x + panel.plotArea.width, sourceXPos);
									var crtTime = new Date(crtTimestamp * 1000);
bab90f22   Elena.Budnik   format + #5668
311
									crtTime = Ext.Date.add(crtTime, Ext.Date.MINUTE, crtTime.getTimezoneOffset());
8c88a270   Erdogan Furkan   10312 - Navigatio...
312
									me.callInteractivePlot({ 'action': 'instant', 'interactiveId': this.interactiveId, 'panelId': panel.id, 'time': crtTime });
bab90f22   Elena.Budnik   format + #5668
313
314
315
								},
								scope: me
							},
8c88a270   Erdogan Furkan   10312 - Navigatio...
316
							'-'
c9071a43   Benjamin Renard   Add instant plot ...
317
318
						]);
					}
9f08f4eb   Benjamin Renard   Zoom in interacti...
319
320
321
					if (amdaPlotComp.PlotContextManager.isInPlotArea(panel, sourceXPos, sourceYPos))
						me.createZoomItemsForPanel(panel.id);
				}
8b11b1af   Benjamin Renard   Insert intervals ...
322

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

37e81bff   Benjamin Renard   Direct save of pl...
326
				me.contextualMenu.add([
bab90f22   Elena.Budnik   format + #5668
327
					{
8c88a270   Erdogan Furkan   10312 - Navigatio...
328
329
330
						text: 'Extend/Shift Time interval',
						disabled: me.isTTNavBar,
						handler: function () {
bab90f22   Elena.Budnik   format + #5668
331
							var extendShiftPlugin = this.getPlugin('plot-extendshift-plugin-id');
b39c9d1d   Benjamin Renard   Fix interactive n...
332
							extendShiftPlugin.show(me.interactiveId);
bab90f22   Elena.Budnik   format + #5668
333
334
335
336
337
338
						},
						scope: me
					},
					'-',
					{
						text: 'Save Plot',
8c88a270   Erdogan Furkan   10312 - Navigatio...
339
						handler: function () {
bab90f22   Elena.Budnik   format + #5668
340
341
							if (me.hiddenForm == null)
								me.hiddenForm = Ext.create('Ext.form.Panel', {
8c88a270   Erdogan Furkan   10312 - Navigatio...
342
									title: 'hiddenForm',
bab90f22   Elena.Budnik   format + #5668
343
344
345
346
									renderTo: Ext.getBody(),
									standardSubmit: true,
									url: 'php/downloadPlot.php',
									timeout: 120000,
8c88a270   Erdogan Furkan   10312 - Navigatio...
347
									height: 100,
bab90f22   Elena.Budnik   format + #5668
348
									width: 100,
8c88a270   Erdogan Furkan   10312 - Navigatio...
349
350
									hidden: true,
									items: []
bab90f22   Elena.Budnik   format + #5668
351
								});
37e81bff   Benjamin Renard   Direct save of pl...
352

bab90f22   Elena.Budnik   format + #5668
353
354
355
							me.hiddenForm.getForm().submit({
								params: {
									sessionId: sessionID,
8c88a270   Erdogan Furkan   10312 - Navigatio...
356
									interactiveId: me.interactiveId
bab90f22   Elena.Budnik   format + #5668
357
								},
8c88a270   Erdogan Furkan   10312 - Navigatio...
358
359
								success: function (form, action) { },
								failure: function (form, action) { }
bab90f22   Elena.Budnik   format + #5668
360
361
362
							});
						}
					}
37e81bff   Benjamin Renard   Direct save of pl...
363
				]);
8c88a270   Erdogan Furkan   10312 - Navigatio...
364

9f08f4eb   Benjamin Renard   Zoom in interacti...
365
366
				me.contextualMenu.showAt(absoluteX, absoluteY);
			}
bab90f22   Elena.Budnik   format + #5668
367
		});
16035364   Benjamin Renard   First commit
368

bab90f22   Elena.Budnik   format + #5668
369
370
		return this.panelImage;
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
371
372

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


bab90f22   Elena.Budnik   format + #5668
376
		this.crtTTFileIndex = configResult.ttFileIndex;
8c88a270   Erdogan Furkan   10312 - Navigatio...
377
378

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

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

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

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

bab90f22   Elena.Budnik   format + #5668
390
391
		this.panelImage.refreshMe();
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
392
393

	updateTimeTableInfo: function () {
bab90f22   Elena.Budnik   format + #5668
394
395
		if (!this.navToolBar)
			return;
8c88a270   Erdogan Furkan   10312 - Navigatio...
396
397

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

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

		var ttTotalField = this.navToolBar.items.get('tt-total-' + this.interactiveId);
bab90f22   Elena.Budnik   format + #5668
406
407
408
		if (ttTotalField)
			ttTotalField.setValue(this.crtContext.page.ttNbIntervals);
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
409
410

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

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

b0a1c31b   Benjamin Renard   Remove multi-plot...
416
		AmdaAction.interactivePlot(obj, function (result, e) {
bab90f22   Elena.Budnik   format + #5668
417
418
			loadMask.hide();
			var t = e.getTransaction();
8c88a270   Erdogan Furkan   10312 - Navigatio...
419
420
421
			if (e.status) {
				if (result) {
					if (result.success) {
488b1401   Benjamin Renard   Interactive multi...
422
						plotModule.updateInteractiveSession(result, false);
9f08f4eb   Benjamin Renard   Zoom in interacti...
423
424
					}
					else
8c88a270   Erdogan Furkan   10312 - Navigatio...
425
						myDesktopApp.errorMsg('Interactive action error - ' + result.message);
9f08f4eb   Benjamin Renard   Zoom in interacti...
426
427
428
429
				}
				else
					myDesktopApp.errorMsg('Cannot execute interactive action');
			}
8c88a270   Erdogan Furkan   10312 - Navigatio...
430
			else {
9f08f4eb   Benjamin Renard   Zoom in interacti...
431
				// FAILURE
8c88a270   Erdogan Furkan   10312 - Navigatio...
432
433
434
				myDesktopApp.errorMsg('Error System - ' + e.message);
			}
		}, this);
bab90f22   Elena.Budnik   format + #5668
435
	},
8c88a270   Erdogan Furkan   10312 - Navigatio...
436
437

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

bab90f22   Elena.Budnik   format + #5668
441
		var commonItemsCfg = [
8c88a270   Erdogan Furkan   10312 - Navigatio...
442
443
444
445
446
447
			'-',
			{
				xtype: 'tbspacer',
				width: 20
			},
			'->',
bab90f22   Elena.Budnik   format + #5668
448
			{
8c88a270   Erdogan Furkan   10312 - Navigatio...
449
				text: 'Get HST Data',
bab90f22   Elena.Budnik   format + #5668
450
				scope: this,
8c88a270   Erdogan Furkan   10312 - Navigatio...
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
				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
471
472
473
			var navigationItemsCfg = [{
				text: 'Previous',
				scope: this,
8c88a270   Erdogan Furkan   10312 - Navigatio...
474
				handler: function () {
bab90f22   Elena.Budnik   format + #5668
475
476
					var ttFileIndex = this.crtTTFileIndex;
					var ttintervalIndex = this.crtContext.page.ttIndex;
8c88a270   Erdogan Furkan   10312 - Navigatio...
477
478
479

					if (ttintervalIndex <= 0 && ttFileIndex > 0) {
						--ttFileIndex;
bab90f22   Elena.Budnik   format + #5668
480
481
482
					}
					else
						--ttintervalIndex;
8c88a270   Erdogan Furkan   10312 - Navigatio...
483
484
					this.callInteractivePlot({ 'action': 'goto', 'interactiveId': this.interactiveId, 'ttFileIndex': ttFileIndex, 'intIndex': ttintervalIndex });
				}
bab90f22   Elena.Budnik   format + #5668
485
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
486
				'-',
bab90f22   Elena.Budnik   format + #5668
487
488
489
			{
				text: 'Next',
				scope: this,
8c88a270   Erdogan Furkan   10312 - Navigatio...
490
				handler: function () {
bab90f22   Elena.Budnik   format + #5668
491
492
					var ttFileIndex = this.crtTTFileIndex;
					var ttintervalIndex = this.crtContext.page.ttIndex;
8c88a270   Erdogan Furkan   10312 - Navigatio...
493
494
495

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

bab90f22   Elena.Budnik   format + #5668
496
497
498
499
500
501
						++ttFileIndex;
						ttintervalIndex = 0;
					}
					else
						++ttintervalIndex;

8c88a270   Erdogan Furkan   10312 - Navigatio...
502
					this.callInteractivePlot({ 'action': 'goto', 'interactiveId': this.interactiveId, 'ttFileIndex': ttFileIndex, 'intIndex': ttintervalIndex });
bab90f22   Elena.Budnik   format + #5668
503
504
				}
			},
0cde4f76   Erdogan Furkan   10312 Merge fixed
505
            '-',
8c88a270   Erdogan Furkan   10312 - Navigatio...
506
			{
46bd4591   Hacene SI HADJ MOHAND   us ok
507
508
509
510
511
512
513
514
515
516
517
518
519
520
				text: 'Use This Time Inteval',
				scope: this,
				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());

					var plotModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.plot.id);
                                                                                                    plotModule.setTimeInterval(timeObj);
				}
			},
bab90f22   Elena.Budnik   format + #5668
521
522
523
			'-',
			{		 
				text: 'Go to Interval #',  
bab90f22   Elena.Budnik   format + #5668
524
				scope: this,
8c88a270   Erdogan Furkan   10312 - Navigatio...
525
526
				handler: function (bt) {
					var ttGotoNumberField = this.navToolBar.items.get('tt-goto-number-' + this.interactiveId);
bab90f22   Elena.Budnik   format + #5668
527
528
529
530
					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...
531
						this.callInteractivePlot({ 'action': 'goto', 'interactiveId': this.interactiveId, 'ttFileIndex': this.crtTTFileIndex, 'intIndex': goToIndex });
bab90f22   Elena.Budnik   format + #5668
532
533
534
535
				}
			},
			{
				xtype: 'numberfield',
8c88a270   Erdogan Furkan   10312 - Navigatio...
536
537
538
				id: 'tt-goto-number-' + this.interactiveId,
				hideTrigger: true,
				width: 50,
bab90f22   Elena.Budnik   format + #5668
539
540
				minValue: 1
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
541
542
543
544
				' ',
				' ',
				' ',
			{
bab90f22   Elena.Budnik   format + #5668
545
				xtype: 'textfield',
8c88a270   Erdogan Furkan   10312 - Navigatio...
546
				id: 'tt-table-' + this.interactiveId,
bab90f22   Elena.Budnik   format + #5668
547
548
549
550
				labelAlign: 'right',
				labelWidth: 30,
				fieldLabel: 'Table',
				width: 130,
8c88a270   Erdogan Furkan   10312 - Navigatio...
551
				disabled: true
bab90f22   Elena.Budnik   format + #5668
552
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
553
			{
bab90f22   Elena.Budnik   format + #5668
554
				xtype: 'textfield',
8c88a270   Erdogan Furkan   10312 - Navigatio...
555
				id: 'tt-number-' + this.interactiveId,
bab90f22   Elena.Budnik   format + #5668
556
557
558
559
				labelAlign: 'right',
				labelWidth: 30,
				fieldLabel: 'Int #',
				width: 90,
8c88a270   Erdogan Furkan   10312 - Navigatio...
560
				disabled: true
bab90f22   Elena.Budnik   format + #5668
561
			},
8c88a270   Erdogan Furkan   10312 - Navigatio...
562
563
564
			{
				xtype: 'textfield',
				id: 'tt-total-' + this.interactiveId,
bab90f22   Elena.Budnik   format + #5668
565
566
567
568
				labelAlign: 'right',
				labelWidth: 30,
				fieldLabel: 'Total',
				width: 90,
8c88a270   Erdogan Furkan   10312 - Navigatio...
569
				disabled: true
bab90f22   Elena.Budnik   format + #5668
570
571
			}];
		}
8c88a270   Erdogan Furkan   10312 - Navigatio...
572
		else {
bab90f22   Elena.Budnik   format + #5668
573
			var navigationItemsCfg = [
8c88a270   Erdogan Furkan   10312 - Navigatio...
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
				{
					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
621
622
623
		}

		var toolItemsCfg = navigationItemsCfg;
8c88a270   Erdogan Furkan   10312 - Navigatio...
624
		Ext.each(commonItemsCfg, function (item) {
bab90f22   Elena.Budnik   format + #5668
625
626
			toolItemsCfg.push(item);
		});
8c88a270   Erdogan Furkan   10312 - Navigatio...
627
628

		if (!this.navToolBar) {
bab90f22   Elena.Budnik   format + #5668
629
630
			var toolConfig = {
				dock: 'top',
8c88a270   Erdogan Furkan   10312 - Navigatio...
631
				items: toolItemsCfg
bab90f22   Elena.Budnik   format + #5668
632
633
			};

8c88a270   Erdogan Furkan   10312 - Navigatio...
634
			this.navToolBar = Ext.create('Ext.toolbar.Toolbar', toolConfig);
bab90f22   Elena.Budnik   format + #5668
635
636
637
638
639
640
641
642
		}
		else
			this.navToolBar.add(toolItemsCfg);

		this.navToolBar.setDisabled(isSuperposeMode);

		this.isTTNavBar = isTimeTable;
		this.isSuperposeMode = isSuperposeMode;
8c88a270   Erdogan Furkan   10312 - Navigatio...
643
644
645
	},

	init: function (configResult) {
bab90f22   Elena.Budnik   format + #5668
646
		this.crtContext = configResult.context;
b39c9d1d   Benjamin Renard   Fix interactive n...
647
		this.interactiveId = configResult.interactiveId;
27a055f4   Benjamin Renard   Multiplot (#8314)
648
		this.multiplot = (configResult.multiplot == true);
bab90f22   Elena.Budnik   format + #5668
649
650
651

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

		this.sliderPage = new Ext.slider.Single({
8c88a270   Erdogan Furkan   10312 - Navigatio...
656
657
658
659
660
661
662
663
664
665
666
667
668
669
			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
670
671
					this.panelImage.height = size.height;
					this.panelImage.doComponentLayout();
8c88a270   Erdogan Furkan   10312 - Navigatio...
672
					this.fireEvent('pagesize', this, v);
bab90f22   Elena.Budnik   format + #5668
673
				}
8c88a270   Erdogan Furkan   10312 - Navigatio...
674
675
676
			}
		});

bab90f22   Elena.Budnik   format + #5668
677
678
679
680
		var mouseToolbar = {
			xtype: 'toolbar',
			height: 25,
			dock: 'bottom',
8c88a270   Erdogan Furkan   10312 - Navigatio...
681
			items: [
bab90f22   Elena.Budnik   format + #5668
682
683
684
685
686
				this.coordinatesField,
				'->',
				this.sliderPage
			]
		};
8c88a270   Erdogan Furkan   10312 - Navigatio...
687

bab90f22   Elena.Budnik   format + #5668
688
689
690
691
692
693
694
695
696
697
		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
698
		var plotResultTabPanelConfig = {
8c88a270   Erdogan Furkan   10312 - Navigatio...
699
700
701
			preventHeader: true,
			autoScroll: true,
			items: [this.createPlotImage(configResult.folder, configResult.plotFile)],
bab90f22   Elena.Budnik   format + #5668
702
703
			dockedItems: [this.navToolBar, mouseToolbar],
			plugins: [
8c88a270   Erdogan Furkan   10312 - Navigatio...
704
705
706
707
708
709
710
711
				{
					ptype: 'plotZoomPlugin',
					pluginId: 'plot-zoom-plugin-id'
				},
				{
					ptype: 'plotExtendShiftPlugin',
					pluginId: 'plot-extendshift-plugin-id'
				}],
bab90f22   Elena.Budnik   format + #5668
712
			listeners: {
8c88a270   Erdogan Furkan   10312 - Navigatio...
713
714
				scope: this,
				destroy: function () {
bab90f22   Elena.Budnik   format + #5668
715
716
717
718
719
720
721
722
723
					var zoomPlugin = this.getPlugin('plot-zoom-plugin-id');
					if (zoomPlugin)
						zoomPlugin.close();
					var exttendShiftPlugin = this.getPlugin('plot-extendshift-plugin-id');
					if (exttendShiftPlugin)
						exttendShiftPlugin.close();
				}
			}
		};
8c88a270   Erdogan Furkan   10312 - Navigatio...
724
725

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