Blame view

js/app/models/PlotObjects/PlotPanelObject.js 28.1 KB
abe09878   Benjamin Renard   Add panels and ax...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
 * Project      : AMDA-NG
 * Name         : PlotPanelObject.js
 * @class   amdaPlotObj.PlotPanelObject
 * @extends Ext.data.Model
 * @brief   Plot Panel Business Object Definition 
 * @author  Benjamin Renard
 * @version $Id: PlotPanelObject.js benjamin $
 ******************************************************************************
 *    FT Id     :   Date   : Name - Description
 ******************************************************************************
 *	:           :13/08/2015: BRE  - file creation
 */
 
 		
Ext.define('amdaPlotObj.PlotPanelObject', {
	extend: 'Ext.data.Model',
dbb7bcbe   Benjamin Renard   Add curves defint...
18
	idProperty: 'id',
17433635   Benjamin Renard   Add series and sp...
19
	
abe09878   Benjamin Renard   Add panels and ax...
20
21
	requires: [
	           'amdaPlotObj.PlotObjectConfig',
17433635   Benjamin Renard   Add series and sp...
22
	           'amdaPlotObj.PlotAxisObject',
94abdb37   Benjamin Renard   Add params legend...
23
	           'amdaPlotObj.PlotParamObject',
339866c4   Benjamin Renard   Add text legend d...
24
	           'amdaPlotObj.PlotLegendSeriesObject',
829160b3   Benjamin Renard   Add constants def...
25
	           'amdaPlotObj.PlotLegendTextObject',
a8c54fb9   Benjamin Renard   Add text object p...
26
	           'amdaPlotObj.PlotConstantObject',
dbb7bcbe   Benjamin Renard   Add curves defint...
27
	           'amdaPlotObj.PlotTextObject',
486cc3c7   Benjamin Renard   Add fill elements...
28
29
	           'amdaPlotObj.PlotCurveObject',
	           'amdaPlotObj.PlotFillObject'
abe09878   Benjamin Renard   Add panels and ax...
30
31
32
33
	],
	
	fields : [
	          {name: 'id', type: 'string'},
2a0b8d2c   Benjamin Renard   Restore node stat...
34
35
36
37
38
39
40
41
	          {name: 'panel-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set 
	          {name: 'axes-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set 
	          {name: 'params-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set 
	          {name: 'add-objects-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set 
	          {name: 'legends-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set 
	          {name: 'text-legends-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set 
	          {name: 'drawing-objects-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set 
	          {name: 'fills-node-state', type: 'int', defaultValue: 2}, //0 : collapsed, 1 : expanded, 2 : not set 
509bf9fa   Benjamin Renard   Replace panel ID ...
42
	          {name: 'panel-index', type: 'int'},
abe09878   Benjamin Renard   Add panels and ax...
43
44
45
46
47
48
49
50
51
52
	          {name: 'panel-background-color', type: 'string'},
              {name: 'panel-title-text', type: 'string'},
              {name: 'panel-title-color', type: 'string'},
              {name: 'panel-title-position', type: 'string'},
              {name: 'panel-title-alignment', type: 'string'},
              {name: 'panel-title-font-activated', type: 'boolean'},
              {name: 'panel-title-font-name', type: 'string'},
              {name: 'panel-title-font-size', type: 'int'},
              {name: 'panel-title-font-bold', type: 'boolean'},
              {name: 'panel-title-font-italic', type: 'boolean'},
abe09878   Benjamin Renard   Add panels and ax...
53
54
55
56
57
              {name: 'panel-plot-type', type: 'string'},
              {name: 'panel-font-activated', type: 'boolean'},
              {name: 'panel-font-name', type: 'string'},
              {name: 'panel-font-size', type: 'int'},
              {name: 'panel-font-bold', type: 'boolean'},
a0bf9157   Benjamin Renard   Add tick plot and...
58
              {name: 'panel-font-italic', type: 'boolean'},
003ba315   Benjamin Renard   Add Epoch Plot an...
59
60
61
62
63
64
65
66
67
68
69
70
              //Only used with layout Manual
              {name: 'panel-bounds-x', type: 'float'},
              {name: 'panel-bounds-y', type: 'float'},
              {name: 'panel-bounds-width', type: 'float'},
              {name: 'panel-bounds-height', type: 'float'},
              {name: 'panel-margin-left', type: 'float', useNull:true},
              {name: 'panel-margin-right', type: 'float', useNull:true},
              //Only used with layout Vertical
              {name: 'panel-prefered-width', type: 'float', useNull:true},
              {name: 'panel-prefered-height', type: 'float', useNull:true},
              //Only used for xyPlot
              {name: 'panel-scatter-isotropic', type: 'boolean'},
a0bf9157   Benjamin Renard   Add tick plot and...
71
72
73
74
              //Only used for statusPlot and timePlot
              {name: 'panel-status-position', type: 'string'},
              {name: 'panel-status-colormap', type: 'int'},
              //Only used for tickPlot and timePlot
003ba315   Benjamin Renard   Add Epoch Plot an...
75
76
              {name: 'panel-tick-format', type: 'int'},
              //Only used for epochPlot
6a801541   Benjamin Renard   Add possibility t...
77
78
79
80
81
82
83
84
85
86
87
88
              {name: 'panel-epoch-centertimeid', type: 'string'},
              //Only used for instantPlot
              {name: 'panel-instant-time', type: 'date',
            	  defaultValue:Ext.Date.add(Ext.Date.clearTime(new Date()),Ext.Date.DAY,-1),
            	  convert: function(value,rec) {
            		  if (!Ext.isDate(value)) {
            		    var valueString = new String(value);
            		    var date = new Date(valueString.replace(/\-/g,'\/').replace(/[T|Z]/g,' '));
            		      return date;
            		  }
            		  return value;
            	  }
94abdb37   Benjamin Renard   Add params legend...
89
90
              },
              //Only used for timePlot, xyPlot, epochPlot and instantPlot
dbb7bcbe   Benjamin Renard   Add curves defint...
91
92
93
94
95
96
              {name: 'panel-legend-series', type: 'auto', defaultValue: null},
              
              {name: 'last-param-id', type: 'int', defaultValue:0},
              {name: 'last-textlegend-id', type: 'int', defaultValue:0},
              {name: 'last-constant-id', type: 'int', defaultValue:0},
              {name: 'last-textobj-id', type: 'int', defaultValue:0},
486cc3c7   Benjamin Renard   Add fill elements...
97
98
              {name: 'last-curve-id', type: 'int', defaultValue:0},
              {name: 'last-fill-id', type: 'int', defaultValue:0}
abe09878   Benjamin Renard   Add panels and ax...
99
100
101
102
103
104
105
106
107
    ],
    
    associations : [
              {
            	  type : 'hasMany', 
            	  model : 'amdaPlotObj.PlotAxisObject',
            	  name  : 'axes'
              },
              {
17433635   Benjamin Renard   Add series and sp...
108
109
110
111
112
            	  type : 'hasMany', 
            	  model : 'amdaPlotObj.PlotParamObject',
            	  name  : 'params'
              },
              {
339866c4   Benjamin Renard   Add text legend d...
113
114
115
116
117
            	  type : 'hasMany', 
            	  model : 'amdaPlotObj.PlotLegendTextObject',
            	  name  : 'textLegends'
              },
              {
829160b3   Benjamin Renard   Add constants def...
118
119
120
121
122
            	  type : 'hasMany', 
            	  model : 'amdaPlotObj.PlotConstantObject',
            	  name  : 'constants'
              },
              {
a8c54fb9   Benjamin Renard   Add text object p...
123
124
125
126
127
            	  type : 'hasMany',
            	  model : 'amdaPlotObj.PlotTextObject',
            	  name : 'textObjs'
              },
              {
dbb7bcbe   Benjamin Renard   Add curves defint...
128
129
130
131
132
            	  type : 'hasMany',
            	  model : 'amdaPlotObj.PlotCurveObject',
            	  name : 'curves'
              },
              {
486cc3c7   Benjamin Renard   Add fill elements...
133
134
135
136
137
            	  type : 'hasMany',
            	  model : 'amdaPlotObj.PlotFillObject',
            	  name : 'fills'
              },
              {
abe09878   Benjamin Renard   Add panels and ax...
138
            	  type  : 'belongsTo',
17433635   Benjamin Renard   Add series and sp...
139
                  model : 'amdaPlotObj.PlotTabObject'
abe09878   Benjamin Renard   Add panels and ax...
140
141
142
              }
    ],
    
ddfe608e   Elena.Budnik   redmine #4814
143
144
	 isComponent : false,
	  
18d4a11e   Benjamin Renard   Save and load plo...
145
146
147
148
149
150
151
152
153
    constructor: function(){
        var me = this;
        me.callParent(arguments);
        if ((arguments.length > 0) && arguments[0])
        {
        	if (arguments[0].axes)
        		me.loadAxes(arguments[0].axes);
        	if (arguments[0].params)
        		me.loadParams(arguments[0].params);
a971060f   Benjamin Renard   Fix some bugs
154
155
        	if (arguments[0]['text-legends'])
        		me.loadTextLegends(arguments[0]['text-legends']);
829160b3   Benjamin Renard   Add constants def...
156
157
        	if (arguments[0].constants)
        		me.loadConstants(arguments[0].constants);
a8c54fb9   Benjamin Renard   Add text object p...
158
159
        	if (arguments[0].textObjs)
        		me.loadTextObjs(arguments[0].textObjs);
dbb7bcbe   Benjamin Renard   Add curves defint...
160
161
        	if (arguments[0].curves)
        		me.loadCurves(arguments[0].curves);
486cc3c7   Benjamin Renard   Add fill elements...
162
163
        	if (arguments[0].fills)
        		me.loadFills(arguments[0].fills);
a971060f   Benjamin Renard   Fix some bugs
164
165
        	if (arguments[0]['panel-series-legend'])
        		me.loadSeriesLegend(arguments[0]['panel-series-legend']);
18d4a11e   Benjamin Renard   Save and load plo...
166
167
168
169
170
171
        }
        else
        {
        	//new object, set default fields values
        	me.setDefaultValues();
        }
a971060f   Benjamin Renard   Fix some bugs
172
        this.dirty = false;
18d4a11e   Benjamin Renard   Save and load plo...
173
174
175
176
177
178
179
180
181
    },
    
    loadAxes: function(axes)
    {
       this.axes().loadData(axes);
    },
    
    loadParams: function(params)
    {
b1a45580   Benjamin Renard   Add compatibility...
182
183
184
185
186
187
188
189
190
191
192
193
194
       /* Compatability mode */
       Ext.each(params, function(param, index) {
         if (param.hasOwnProperty('is-init')) {
            return;
         }
         params[index]['dim1-sum-type']  = param['dim1-is-range'] ? 1 : 0;
         params[index]['dim1-min-value'] = param['dim1-min-range'];
         params[index]['dim1-max-value'] = param['dim1-max-range'];
         params[index]['dim2-sum-type']  = param['dim2-is-range'] ? 1 : 0;
         params[index]['dim2-min-value'] = param['dim2-min-range'];
         params[index]['dim2-max-value'] = param['dim2-max-range'];
         params[index]['is-init'] = true;
       });
18d4a11e   Benjamin Renard   Save and load plo...
195
196
197
       this.params().loadData(params);
    },
    
339866c4   Benjamin Renard   Add text legend d...
198
199
200
201
202
    loadTextLegends: function(textLegends)
    {
       this.textLegends().loadData(textLegends);
    },
    
829160b3   Benjamin Renard   Add constants def...
203
204
205
206
207
    loadConstants: function(constants)
    {
       this.constants().loadData(constants);
    },
    
a8c54fb9   Benjamin Renard   Add text object p...
208
209
210
211
212
    loadTextObjs: function(textObjs)
    {
    	this.textObjs().loadData(textObjs);
    },
    
dbb7bcbe   Benjamin Renard   Add curves defint...
213
214
215
216
217
    loadCurves: function(curves)
    {
    	this.curves().loadData(curves);
    },
    
486cc3c7   Benjamin Renard   Add fill elements...
218
219
220
221
222
    loadFills: function(fills)
    {
    	this.fills().loadData(fills);
    },
    
a971060f   Benjamin Renard   Fix some bugs
223
224
225
226
227
228
    loadSeriesLegend: function(seriesLegend)
    {
    	this.set('panel-legend-series', new amdaPlotObj.PlotLegendSeriesObject(seriesLegend));
    	this.get('panel-legend-series').dirty = false;
    },
    
abe09878   Benjamin Renard   Add panels and ax...
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
    initAxes : function()
    {
    	this.axes().removeAll();
    	switch (this.get('panel-plot-type'))
    	{
    	case 'timePlot' :
    		//Time axis
    		var recs = this.axes().add({id : 'time'});
        	recs[0].setDefaultValues('time');
        	//Y Left Axis
        	recs = this.axes().add({id : 'y-left'});
        	recs[0].setDefaultValues('y-left');
        	//Y Right Axis
        	recs = this.axes().add({id : 'y-right'});
        	recs[0].setDefaultValues('y-right');
        	//Color Axis
        	recs = this.axes().add({id : 'color'});
        	recs[0].setDefaultValues('color');
    		break;
    	case 'xyPlot' :
abe09878   Benjamin Renard   Add panels and ax...
249
    		//X Axis
7ef7ea02   Benjamin Renard   Add erase button ...
250
    		var recs = this.axes().add({id : 'xaxis_id'});
abe09878   Benjamin Renard   Add panels and ax...
251
252
253
254
255
256
257
258
259
260
261
        	recs[0].setDefaultValues('x');
        	//Y Left Axis
        	recs = this.axes().add({id : 'y-left'});
        	recs[0].setDefaultValues('y-left');
        	//Y Right Axis
        	recs = this.axes().add({id : 'y-right'});
        	recs[0].setDefaultValues('y-right');
        	//Color Axis
        	recs = this.axes().add({id : 'color'});
        	recs[0].setDefaultValues('color');
    		break;
6a801541   Benjamin Renard   Add possibility t...
262
263
    	case 'instantPlot' :
    		//X Axis
7ef7ea02   Benjamin Renard   Add erase button ...
264
    		var recs = this.axes().add({id : 'xaxis_id'});
6a801541   Benjamin Renard   Add possibility t...
265
266
267
268
269
270
271
272
        	recs[0].setDefaultValues('x');
        	//Y Left Axis
        	recs = this.axes().add({id : 'y-left'});
        	recs[0].setDefaultValues('y-left');
        	//Color Axis
        	recs = this.axes().add({id : 'color'});
        	recs[0].setDefaultValues('color');
    		break;
abe09878   Benjamin Renard   Add panels and ax...
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
    	case 'epochPlot' :
    		//Epoch Axis
    		var recs = this.axes().add({id : 'epoch'});
        	recs[0].setDefaultValues('epoch');
        	//Y Left Axis
        	recs = this.axes().add({id : 'y-left'});
        	recs[0].setDefaultValues('y-left');
        	//Y Right Axis
        	recs = this.axes().add({id : 'y-right'});
        	recs[0].setDefaultValues('y-right');
        	//Color Axis
        	recs = this.axes().add({id : 'color'});
        	recs[0].setDefaultValues('color');
    		break;
    	case 'statusPlot' :
    	case 'tickPlot' :
    		//Time axis
    		var recs = this.axes().add({id : 'time'});
        	recs[0].setDefaultValues('time');
    		break;
    	}
    },
    
a3c4d78a   Benjamin Renard   Use TT or Catlog ...
296
297
298
299
300
    createNewParam: function(paramId, data, onAfterCreate) {
	var isPlotOnly = (typeof data !== "undefined") && (typeof data.plotOnly !== "undefined") && data.plotOnly;
	var isTTCat = (typeof data !== "undefined") && (typeof data.isTTCat !== "undefined") && data.isTTCat;
	var isVector = (typeof data !== "undefined") && (typeof data.isVector !== "undefined") && data.isVector;
	var components = (typeof data !== "undefined") && (typeof data.components !== "undefined") && data.components ? data.components : null;
2fa56f95   Benjamin Renard   Predefined templa...
301
	var template_args = (typeof data !== "undefined") && (typeof data.template_args !== "undefined") && data.template_args ? data.template_args : null;
a3c4d78a   Benjamin Renard   Use TT or Catlog ...
302

dbb7bcbe   Benjamin Renard   Add curves defint...
303
    	this.set('last-param-id', this.get('last-param-id') + 1);
ced82260   Benjamin Renard   Get initial plot ...
304
305
    	
    	var emptyPanel = (this.params().getCount() == 0);
29dfb596   Benjamin Renard   Rework of ParamAr...
306
307
308
309

    	var obj = amdaModel.RequestParamObject.getEmptyObj();
	obj['id'] = this.get('last-param-id');
    	var recs = this.params().add(obj);
bb6e93d9   Benjamin Renard   Implement templat...
310
    	recs[0].set('paramid', paramId);
a3c4d78a   Benjamin Renard   Use TT or Catlog ...
311
	recs[0].set('plotonly', isPlotOnly);
2fa56f95   Benjamin Renard   Predefined templa...
312
313
314
	if (template_args) {
		recs[0].set('template_args', template_args);
	}
ddfe608e   Elena.Budnik   redmine #4814
315
		
a3c4d78a   Benjamin Renard   Use TT or Catlog ...
316
317
    	if (components != null) {
    		if (components['index1']) {
29dfb596   Benjamin Renard   Rework of ParamAr...
318
			this.isComponent = true;
a3c4d78a   Benjamin Renard   Use TT or Catlog ...
319
    			recs[0].set('dim1-index', components['index1']);
690e0a87   Benjamin Renard   Add sum in table ...
320
    		}
a3c4d78a   Benjamin Renard   Use TT or Catlog ...
321
322
    		if (components['index2']) {
    			recs[0].set('dim2-index', components['index2']);
690e0a87   Benjamin Renard   Add sum in table ...
323
    		}
63ac7745   Benjamin Renard   Support component...
324
    	}
7b963397   Elena.Budnik   correct init for 2d
325

ea69a33c   Benjamin Renard   Allow drag&drop o...
326
	recs[0].set('param-type', isTTCat ? 'ttcat' : 'param');
a3c4d78a   Benjamin Renard   Use TT or Catlog ...
327
328
329
	if (isTTCat) {
		recs[0].set('param-ttcat-name', data.name);
	} 
ea69a33c   Benjamin Renard   Allow drag&drop o...
330

22dd7e8c   Elena.Budnik   Redmine #5142 : l...
331
332
333
334
335
336
337
    	// activate legend if vector & TimePlot
    	if ( isVector && this.get('panel-plot-type') == 'timePlot' ) {
			this.loadSeriesLegend();
			this.get('panel-legend-series').set('legend-series-activated',true);
		}
		
    	var me = this;		
ced82260   Benjamin Renard   Get initial plot ...
338
339
    	amdaPlotObj.PlotObjectConfig.getParamConfig(paramId, function (success, data) {
    		var availableDrawingObjects = null;
ddfe608e   Elena.Budnik   redmine #4814
340

ced82260   Benjamin Renard   Get initial plot ...
341
    		//Change type only if the panel is empty!
35c71481   Benjamin Renard   Set predefined dr...
342
    		if (success) {
ddfe608e   Elena.Budnik   redmine #4814
343
    			if (emptyPanel && !me.isComponent)
35c71481   Benjamin Renard   Set predefined dr...
344
    				me.changePlotType(data.panel.plotType);
f17b2e35   Hacene SI HADJ MOHAND   solving 8782
345
346
                        if(data.panel.isotropic)
                                me.setIsotropic(data.panel.isotropic);
ddfe608e   Elena.Budnik   redmine #4814
347
348
				
    			if (data.draw && !me.isComponent) {
35c71481   Benjamin Renard   Set predefined dr...
349
350
351
352
353
354
355
356
    				availableDrawingObjects = recs[0].getAvailableDrawingObjectByPlotType(me.get('panel-plot-type'));
    				
    				Ext.each(availableDrawingObjects, function (drawingObj) {
    					if (drawingObj.key == data.draw.type) {
    						availableDrawingObjects = [{'key' : data.draw.type}];
    					}
    				});
    			}
ced82260   Benjamin Renard   Get initial plot ...
357
358
359
360
361
362
363
364
365
    		}
    		
    		if (!availableDrawingObjects)
    			availableDrawingObjects = recs[0].getAvailableDrawingObjectByPlotType(me.get('panel-plot-type'));
    			
        	
    		recs[0].changeDrawingType(availableDrawingObjects[0].key, data ? data.draw : null);	

    		if (success && emptyPanel) {
22dd7e8c   Elena.Budnik   Redmine #5142 : l...
366

ced82260   Benjamin Renard   Get initial plot ...
367
368
369
370
371
372
    			if (data.additionalObjects && data.additionalObjects.curves) {
    				Ext.each(data.additionalObjects.curves, function (curveData) {
    					var newCurve = me.createNewCurve();
    					newCurve.loadFromData(curveData,recs[0].getId());
    				});
    			}
251a648a   Benjamin Renard   Load parameter ax...
373
374
375
376
377
378
379
380
381
382
383
384
    			
    			//Axes
    			if (data.draw && data.draw.axes) {
    				Ext.Object.each(data.draw.axes, function (axisKey, axisData) {
    					var axis = me.axes().getById(axisKey);
    					if (axis) {
    						Ext.Object.each(axisData, function (optKey, optData) {
    							axis.set(optKey, optData);
    						});
    					}
    				});
    			}
ced82260   Benjamin Renard   Get initial plot ...
385
386
387
388
389
390
    		}
    		
			me.dirty = true;
			
			onAfterCreate(recs[0]);
    	});
17433635   Benjamin Renard   Add series and sp...
391
392
393
394
395
396
397
398
    },
    
    removeParamById: function(paramId) {
    	//Retrieve param record
    	var paramRecord = this.params().getById(paramId);
    	if (paramRecord == null)
    		return false;
    	this.params().remove(paramRecord);
a971060f   Benjamin Renard   Fix some bugs
399
    	this.dirty = true;
981b1596   Benjamin Renard   Remove related ad...
400
401
402
403
404
405
406
	var curvesToRemove = [];
	this.curves().each(function(curve) {
		if (curve.get('curve-serie-id') == paramId) {
			curvesToRemove.push(curve);
		}
	});
	this.curves().remove(curvesToRemove);
17433635   Benjamin Renard   Add series and sp...
407
408
409
    	return true;
    },
    
339866c4   Benjamin Renard   Add text legend d...
410
    createNewTextLegend: function() {
dbb7bcbe   Benjamin Renard   Add curves defint...
411
    	this.set('last-textlegend-id', this.get('last-textlegend-id') + 1);
fd5552a4   Benjamin Renard   Info for plot ele...
412
    	var recs = this.textLegends().add({id : this.get('last-textlegend-id')});
339866c4   Benjamin Renard   Add text legend d...
413
    	recs[0].setDefaultValues();
a971060f   Benjamin Renard   Fix some bugs
414
    	this.dirty = true;
339866c4   Benjamin Renard   Add text legend d...
415
416
417
418
419
420
421
422
423
    	return recs[0];
    },
    
    removeTextLegendById: function(legendId) {
    	//Retrieve text legend record
    	var textLegendRecord = this.textLegends().getById(legendId);
    	if (textLegendRecord == null)
    		return false;
    	this.textLegends().remove(textLegendRecord);
a971060f   Benjamin Renard   Fix some bugs
424
    	this.dirty = true;
339866c4   Benjamin Renard   Add text legend d...
425
426
427
    	return true;
    },
    
829160b3   Benjamin Renard   Add constants def...
428
    createNewConstant: function() {
dbb7bcbe   Benjamin Renard   Add curves defint...
429
    	this.set('last-constant-id', this.get('last-constant-id') + 1);
fd5552a4   Benjamin Renard   Info for plot ele...
430
    	var recs = this.constants().add({id : this.get('last-constant-id')});
829160b3   Benjamin Renard   Add constants def...
431
    	recs[0].setDefaultValues();
a971060f   Benjamin Renard   Fix some bugs
432
    	this.dirty = true;
829160b3   Benjamin Renard   Add constants def...
433
434
435
436
437
438
439
440
441
    	return recs[0];
    },
    
    removeConstantById: function(constantId) {
    	//Retrieve constant record
    	var constantRecord = this.constants().getById(constantId);
    	if (constantRecord == null)
    		return false;
    	this.constants().remove(constantRecord);
a971060f   Benjamin Renard   Fix some bugs
442
    	this.dirty = true;
829160b3   Benjamin Renard   Add constants def...
443
444
445
    	return true;
    },
    
a8c54fb9   Benjamin Renard   Add text object p...
446
    createNewTextObject: function() {
dbb7bcbe   Benjamin Renard   Add curves defint...
447
    	this.set('last-textobj-id', this.get('last-textobj-id') + 1);
fd5552a4   Benjamin Renard   Info for plot ele...
448
    	var recs = this.textObjs().add({id : this.get('last-textobj-id')});
a8c54fb9   Benjamin Renard   Add text object p...
449
    	recs[0].setDefaultValues();
a971060f   Benjamin Renard   Fix some bugs
450
    	this.dirty = true;
a8c54fb9   Benjamin Renard   Add text object p...
451
452
453
454
455
456
457
458
459
    	return recs[0];
    },
    
    removeTextObjectById: function(textObjId) {
    	//Retrieve text object record
    	var textObjRecord = this.textObjs().getById(textObjId);
    	if (textObjRecord == null)
    		return false;
    	this.textObjs().remove(textObjRecord);
a971060f   Benjamin Renard   Fix some bugs
460
    	this.dirty = true;
a8c54fb9   Benjamin Renard   Add text object p...
461
462
463
    	return true;
    },
    
dbb7bcbe   Benjamin Renard   Add curves defint...
464
465
    createNewCurve: function() {
    	this.set('last-curve-id', this.get('last-curve-id') + 1);
fd5552a4   Benjamin Renard   Info for plot ele...
466
    	var recs = this.curves().add({id : this.get('last-curve-id')});
dbb7bcbe   Benjamin Renard   Add curves defint...
467
    	recs[0].setDefaultValues();
a971060f   Benjamin Renard   Fix some bugs
468
    	this.dirty = true;
dbb7bcbe   Benjamin Renard   Add curves defint...
469
470
471
472
473
474
475
476
477
    	return recs[0];
    },
    
    removeCurveById: function(curveId) {
    	//Retrieve curve record
    	var curveRecord = this.curves().getById(curveId);
    	if (curveRecord == null)
    		return false;
    	this.curves().remove(curveRecord);
a971060f   Benjamin Renard   Fix some bugs
478
    	this.dirty = true;
dbb7bcbe   Benjamin Renard   Add curves defint...
479
480
481
    	return true;
    },
    
486cc3c7   Benjamin Renard   Add fill elements...
482
483
484
485
    createNewFill: function() {
    	this.set('last-fill-id', this.get('last-fill-id') + 1);
    	var recs = this.fills().add({id : this.get('last-fill-id')});
    	recs[0].setDefaultValues();
a971060f   Benjamin Renard   Fix some bugs
486
    	this.dirty = true;
486cc3c7   Benjamin Renard   Add fill elements...
487
488
489
490
491
492
493
494
495
    	return recs[0];
    },
    
    removeFillById: function(fillId) {
    	//Retrieve fill record
    	var fillRecord = this.fills().getById(fillId);
    	if (fillRecord == null)
    		return false;
    	this.fills().remove(fillRecord);
a971060f   Benjamin Renard   Fix some bugs
496
    	this.dirty = true;
486cc3c7   Benjamin Renard   Add fill elements...
497
498
499
    	return true;
    },
    
f17b2e35   Hacene SI HADJ MOHAND   solving 8782
500
501
502
503
504
505
    setIsotropic: function (isotropic){
        if(this.get('panel-plot-type') !=  'xyPlot') 
            return;
        this.set('panel-scatter-isotropic', isotropic);
    },
    
a971060f   Benjamin Renard   Fix some bugs
506
507
    changePlotType: function(plotType) {
    	if (plotType == this.get('panel-plot-type'))
a0bf9157   Benjamin Renard   Add tick plot and...
508
509
510
511
512
513
514
515
516
517
518
519
520
521
    		return;
    	
    	this.set('panel-plot-type', plotType);
    	this.params().each(function (param, index) {
    		var availableDrawingObjects = param.getAvailableDrawingObjectByPlotType(plotType);
    		var compatibleDrawingType = false;
    		Ext.each(availableDrawingObjects, function (item, index) {
    			if (param.get('param-drawing-type') == item.key)
    			{
    				compatibleDrawingType = true;
    			}
    		});
    		if (!compatibleDrawingType)
    		{
a971060f   Benjamin Renard   Fix some bugs
522
    			param.changeDrawingType(availableDrawingObjects[0].key);
a0bf9157   Benjamin Renard   Add tick plot and...
523
524
525
    		}
    	});
    	this.initAxes();
94abdb37   Benjamin Renard   Add params legend...
526
527
528
529
530
531
    	
    	if ((plotType == 'timePlot') || (plotType == 'xyPlot') || (plotType == 'epochPlot') || (plotType == 'instantPlot'))
    	{
    		if (this.get('panel-legend-series') == null)
    		{
    			this.set('panel-legend-series', new amdaPlotObj.PlotLegendSeriesObject());
94abdb37   Benjamin Renard   Add params legend...
532
533
534
    		}
    	}
    	else
339866c4   Benjamin Renard   Add text legend d...
535
    	{
94abdb37   Benjamin Renard   Add params legend...
536
    		this.set('panel-legend-series', null);
339866c4   Benjamin Renard   Add text legend d...
537
538
    		this.textLegends().removeAll();
    	}
fd5552a4   Benjamin Renard   Info for plot ele...
539
540
541
542
543
544
    	
    	if ((plotType == 'tickPlot') || (plotType == 'statusPlot'))
    	{
    		this.textObjs().removeAll();
    		this.constants().removeAll();
    		this.curves().removeAll();
486cc3c7   Benjamin Renard   Add fill elements...
545
    		this.fills().removeAll();
fd5552a4   Benjamin Renard   Info for plot ele...
546
547
548
    	}
    	else if (plotType != 'xyPlot')
    		this.curves().removeAll();
a0bf9157   Benjamin Renard   Add tick plot and...
549
550
    },
    
abe09878   Benjamin Renard   Add panels and ax...
551
552
553
554
555
556
557
558
559
560
561
562
563
564
    setDefaultValues: function()
    {
    	this.set('panel-background-color', amdaPlotObj.PlotObjectConfig.defaultValues.panel.backgroundColor);
    	this.set('panel-title-text', '');
    	this.set('panel-title-color', amdaPlotObj.PlotObjectConfig.defaultValues.panel.title.color);
    	this.set('panel-title-position', amdaPlotObj.PlotObjectConfig.defaultValues.panel.title.position);
    	this.set('panel-title-alignment', amdaPlotObj.PlotObjectConfig.defaultValues.panel.title.alignment);
    	
    	this.set('panel-title-font-activated', false);
    	this.set('panel-title-font-name', amdaPlotObj.PlotObjectConfig.defaultValues.panel.font.name);
    	this.set('panel-title-font-size', amdaPlotObj.PlotObjectConfig.defaultValues.panel.font.size);
    	this.set('panel-title-font-bold', false);
    	this.set('panel-title-font-italic', false);
    	
abe09878   Benjamin Renard   Add panels and ax...
565
566
567
568
569
570
    	this.set('panel-font-activated', false);
    	this.set('panel-font-name', amdaPlotObj.PlotObjectConfig.defaultValues.panel.font.name);
    	this.set('panel-font-size', amdaPlotObj.PlotObjectConfig.defaultValues.panel.font.size);
    	this.set('panel-font-bold', false);
    	this.set('panel-font-italic', false);
    	
003ba315   Benjamin Renard   Add Epoch Plot an...
571
572
573
574
575
576
577
578
579
580
581
    	this.set('panel-bounds-x', 0);
    	this.set('panel-bounds-y', 0);
    	this.set('panel-bounds-width', 1);
    	this.set('panel-bounds-height', 1);
    	
    	this.set('panel-margin-left', null);
    	this.set('panel-margin-right', null);
    	
    	this.set('panel-prefered-width', null);
    	this.set('panel-prefered-height', null);
    	
ced82260   Benjamin Renard   Get initial plot ...
582
    	this.set('panel-scatter-isotropic', amdaPlotObj.PlotObjectConfig.defaultValues.panel.isotropic);
003ba315   Benjamin Renard   Add Epoch Plot an...
583
    	
a0bf9157   Benjamin Renard   Add tick plot and...
584
585
586
587
588
    	this.set('panel-status-position', amdaPlotObj.PlotObjectConfig.defaultValues.panel.status.position);
    	this.set('panel-status-colormap', amdaPlotObj.PlotObjectConfig.defaultValues.panel.status.colorMap);
    	
    	this.set('panel-tick-format', "");
    	
003ba315   Benjamin Renard   Add Epoch Plot an...
589
590
    	this.set('panel-epoch-centertimeid', "");
    	
a971060f   Benjamin Renard   Fix some bugs
591
    	this.changePlotType(amdaPlotObj.PlotObjectConfig.defaultValues.panel.plotType);
abe09878   Benjamin Renard   Add panels and ax...
592
593
    },
    
fd5552a4   Benjamin Renard   Info for plot ele...
594
595
596
    getPanelShortInfo : function()
    {
    	var type = amdaPlotObj.PlotObjectConfig.getValueByKey(amdaPlotObj.PlotObjectConfig.availablePlotTypes, this.get('panel-plot-type'));
509bf9fa   Benjamin Renard   Replace panel ID ...
597
		var info = '#'+this.get('panel-index')+', '+type;
fd5552a4   Benjamin Renard   Info for plot ele...
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
		switch (this.get('panel-plot-type'))
		{
		case 'instantPlot' :
			info += (', '+Ext.Date.format(this.get('panel-instant-time'), "Y/m/d H:i:s"));
			break;
		case 'epochPlot' :
			info += (', '+this.get('panel-epoch-centertimeid'));
			break;
		case 'xyPlot' :
			if (this.get('panel-scatter-isotropic'))
				info += ', Isotropic';
			break;
		}
		return info;
    },
    
a971060f   Benjamin Renard   Fix some bugs
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
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
    isDirty : function()
    {
    	if (this.dirty)
    		return true;
    	var d = false;
    	
    	this.axes().each(function (axe, index) {
    		if (axe.isDirty())
    			d = true;
    	});
    	if (d)
    		return d;
    	
    	this.params().each(function (param, index) {
    		if (param.isDirty())
    			d = true;
    	});
    	if (d)
    		return d;
    	
    	this.textLegends().each(function (text, index) {
    		if (text.dirty)
    			d = true;
    	});
    	if (d)
    		return d;
    	
    	this.constants().each(function (constant, index) {
    		if (constant.dirty)
    			d = true;
    	});
    	if (d)
    		return d;
    	
    	this.textObjs().each(function (textObj, index) {
    		if (textObj.dirty)
    			d = true;
    	});
    	if (d)
    		return d;
    	
    	this.curves().each(function (curve, index) {
    		if (curve.isDirty())
    			d = true;
    	});
    	if (d)
    		return d;
    	
    	this.fills().each(function (fill, index) {
    		if (fill.dirty)
    			d = true;
    	});
    	if (d)
    		return d;
    	
    	if (this.get('panel-legend-series') != null)
    		if (this.get('panel-legend-series').dirty)
    			return true;
    	
    	return false;
    },
    
17433635   Benjamin Renard   Add series and sp...
676
    getJsonValues : function() 
abe09878   Benjamin Renard   Add panels and ax...
677
678
679
    {
    	var panelValues  = new Object();
    	
dbb7bcbe   Benjamin Renard   Add curves defint...
680
681
    	panelValues['id'] = this.get('id');
    	
2a0b8d2c   Benjamin Renard   Restore node stat...
682
683
684
685
686
687
688
689
690
    	panelValues['panel-node-state'] = this.get('panel-node-state');
    	panelValues['axes-node-state'] = this.get('axes-node-state');
    	panelValues['params-node-state'] = this.get('params-node-state');
    	panelValues['add-objects-node-state'] = this.get('add-objects-node-state');
    	panelValues['legends-node-state'] = this.get('legends-node-state');
    	panelValues['text-legends-node-state'] = this.get('text-legends-node-state');
    	panelValues['drawing-objects-node-state'] = this.get('drawing-objects-node-state');
    	panelValues['fills-node-state'] = this.get('fills-node-state');
    	
509bf9fa   Benjamin Renard   Replace panel ID ...
691
692
    	panelValues['panel-index'] = this.get('panel-index');
    	
abe09878   Benjamin Renard   Add panels and ax...
693
694
695
696
697
698
699
700
701
702
    	panelValues['panel-background-color'] = this.get('panel-background-color');
    	panelValues['panel-title-text'] = this.get('panel-title-text');
    	panelValues['panel-title-color'] = this.get('panel-title-color');
    	panelValues['panel-title-position'] = this.get('panel-title-position');
    	panelValues['panel-title-alignment'] = this.get('panel-title-alignment');
    	panelValues['panel-title-font-activated'] = this.get('panel-title-font-activated');
    	panelValues['panel-title-font-name'] = this.get('panel-title-font-name');
    	panelValues['panel-title-font-size'] = this.get('panel-title-font-size');
    	panelValues['panel-title-font-bold'] = this.get('panel-title-font-bold');
    	panelValues['panel-title-font-italic'] = this.get('panel-title-font-italic');
abe09878   Benjamin Renard   Add panels and ax...
703
704
705
706
707
708
709
    	panelValues['panel-plot-type'] = this.get('panel-plot-type');
    	panelValues['panel-font-activated'] = this.get('panel-font-activated');
    	panelValues['panel-font-name'] = this.get('panel-font-name');
    	panelValues['panel-font-size'] = this.get('panel-font-size');
    	panelValues['panel-font-bold'] = this.get('panel-font-bold');
    	panelValues['panel-font-italic'] = this.get('panel-font-italic');
    	
003ba315   Benjamin Renard   Add Epoch Plot an...
710
711
712
713
714
715
716
717
718
719
720
721
722
723
    	panelValues['panel-bounds-x']      = this.get('panel-bounds-x');
    	panelValues['panel-bounds-y']      = this.get('panel-bounds-y');
    	panelValues['panel-bounds-width']  = this.get('panel-bounds-width');
    	panelValues['panel-bounds-height'] = this.get('panel-bounds-height');
    	
    	panelValues['panel-margin-left'] = this.get('panel-margin-left') ? this.get('panel-margin-left') : -1;
    	panelValues['panel-margin-right'] = this.get('panel-margin-right') ? this.get('panel-margin-right') : -1;
    	
    	panelValues['panel-prefered-width'] = this.get('panel-prefered-width') ? this.get('panel-prefered-width') : -1;
    	panelValues['panel-prefered-height'] = this.get('panel-prefered-height') ? this.get('panel-prefered-height') : -1;
    	
    	if (this.get('panel-plot-type') == 'xyPlot')
    		panelValues['panel-scatter-isotropic'] = this.get('panel-scatter-isotropic');
    	
a0bf9157   Benjamin Renard   Add tick plot and...
724
725
726
727
728
729
730
731
732
733
734
    	if ((this.get('panel-plot-type') == 'statusPlot') || (this.get('panel-plot-type') == 'timePlot'))
    	{
    		panelValues['panel-status-position'] = this.get('panel-status-position');
    		panelValues['panel-status-colormap'] = this.get('panel-status-colormap');
    	}
    	
    	if ((this.get('panel-plot-type') == 'tickPlot') || (this.get('panel-plot-type') == 'timePlot'))
    	{
    		panelValues['panel-tick-format'] = this.get('panel-tick-format');
    	}
    	
003ba315   Benjamin Renard   Add Epoch Plot an...
735
736
737
    	if (this.get('panel-plot-type') == 'epochPlot')
    		panelValues['panel-epoch-centertimeid'] = this.get('panel-epoch-centertimeid');
    	
6a801541   Benjamin Renard   Add possibility t...
738
739
740
    	if (this.get('panel-plot-type') == 'instantPlot')
    		panelValues['panel-instant-time'] = this.get('panel-instant-time');
    	
a971060f   Benjamin Renard   Fix some bugs
741
    	if (this.get('panel-legend-series') != null)
94abdb37   Benjamin Renard   Add params legend...
742
743
    		panelValues['panel-series-legend'] = this.get('panel-legend-series').getJsonValues();
    	
339866c4   Benjamin Renard   Add text legend d...
744
745
746
747
748
749
    	panelValues['text-legends'] = [];
    	
    	this.textLegends().each(function (legend, index) {
    		panelValues['text-legends'][index] = legend.getJsonValues();
    	});
    	
829160b3   Benjamin Renard   Add constants def...
750
751
752
753
754
755
    	panelValues['constants'] = [];
    	
    	this.constants().each(function (constant, index) {
    		panelValues['constants'][index] = constant.getJsonValues();
    	});
    	
a8c54fb9   Benjamin Renard   Add text object p...
756
757
758
759
760
761
    	panelValues['textObjs'] = [];
    	
    	this.textObjs().each(function (textObj, index) {
    		panelValues['textObjs'][index] = textObj.getJsonValues();
    	});
    	
dbb7bcbe   Benjamin Renard   Add curves defint...
762
763
764
765
766
767
    	panelValues['curves'] = [];
    	
    	this.curves().each(function (curve, index) {
    		panelValues['curves'][index] = curve.getJsonValues();
    	});
    	
486cc3c7   Benjamin Renard   Add fill elements...
768
769
770
771
772
773
    	panelValues['fills'] = [];
    	
    	this.fills().each(function (fill, index) {
    		panelValues['fills'][index] = fill.getJsonValues();
    	});
    	
abe09878   Benjamin Renard   Add panels and ax...
774
775
776
777
778
779
    	panelValues['axes'] = [];
    	
    	this.axes().each(function (axe, index) {
    		panelValues['axes'][index] = axe.getJsonValues();
    	});
    	
17433635   Benjamin Renard   Add series and sp...
780
781
782
783
784
785
    	panelValues['params'] = [];
    	
    	this.params().each(function (param, index) {
    		panelValues['params'][index] = param.getJsonValues();
    	});
    	
dbb7bcbe   Benjamin Renard   Add curves defint...
786
787
788
789
790
    	panelValues['last-param-id'] = this.get('last-param-id');
    	panelValues['last-textlegend-id'] = this.get('last-textlegend-id');
    	panelValues['last-constant-id'] = this.get('last-constant-id');
    	panelValues['last-textobj-id'] = this.get('last-textobj-id');
    	panelValues['last-curve-id'] = this.get('last-curve-id');
486cc3c7   Benjamin Renard   Add fill elements...
791
    	panelValues['last-fill-id'] = this.get('last-fill-id');
dbb7bcbe   Benjamin Renard   Add curves defint...
792
    	
abe09878   Benjamin Renard   Add panels and ax...
793
794
    	return panelValues;
    }
981b1596   Benjamin Renard   Remove related ad...
795
});