Blame view

js/app/models/PlotObjects/PlotPanelObject.js 26.3 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
              }
    ],
    
18d4a11e   Benjamin Renard   Save and load plo...
143
144
145
146
147
148
149
150
151
    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
152
153
        	if (arguments[0]['text-legends'])
        		me.loadTextLegends(arguments[0]['text-legends']);
829160b3   Benjamin Renard   Add constants def...
154
155
        	if (arguments[0].constants)
        		me.loadConstants(arguments[0].constants);
a8c54fb9   Benjamin Renard   Add text object p...
156
157
        	if (arguments[0].textObjs)
        		me.loadTextObjs(arguments[0].textObjs);
dbb7bcbe   Benjamin Renard   Add curves defint...
158
159
        	if (arguments[0].curves)
        		me.loadCurves(arguments[0].curves);
486cc3c7   Benjamin Renard   Add fill elements...
160
161
        	if (arguments[0].fills)
        		me.loadFills(arguments[0].fills);
a971060f   Benjamin Renard   Fix some bugs
162
163
        	if (arguments[0]['panel-series-legend'])
        		me.loadSeriesLegend(arguments[0]['panel-series-legend']);
18d4a11e   Benjamin Renard   Save and load plo...
164
165
166
167
168
169
        }
        else
        {
        	//new object, set default fields values
        	me.setDefaultValues();
        }
a971060f   Benjamin Renard   Fix some bugs
170
        this.dirty = false;
18d4a11e   Benjamin Renard   Save and load plo...
171
172
173
174
175
176
177
178
179
180
181
182
    },
    
    loadAxes: function(axes)
    {
       this.axes().loadData(axes);
    },
    
    loadParams: function(params)
    {
       this.params().loadData(params);
    },
    
339866c4   Benjamin Renard   Add text legend d...
183
184
185
186
187
    loadTextLegends: function(textLegends)
    {
       this.textLegends().loadData(textLegends);
    },
    
829160b3   Benjamin Renard   Add constants def...
188
189
190
191
192
    loadConstants: function(constants)
    {
       this.constants().loadData(constants);
    },
    
a8c54fb9   Benjamin Renard   Add text object p...
193
194
195
196
197
    loadTextObjs: function(textObjs)
    {
    	this.textObjs().loadData(textObjs);
    },
    
dbb7bcbe   Benjamin Renard   Add curves defint...
198
199
200
201
202
    loadCurves: function(curves)
    {
    	this.curves().loadData(curves);
    },
    
486cc3c7   Benjamin Renard   Add fill elements...
203
204
205
206
207
    loadFills: function(fills)
    {
    	this.fills().loadData(fills);
    },
    
a971060f   Benjamin Renard   Fix some bugs
208
209
210
211
212
213
    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...
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
    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...
234
    		//X Axis
7ef7ea02   Benjamin Renard   Add erase button ...
235
    		var recs = this.axes().add({id : 'xaxis_id'});
abe09878   Benjamin Renard   Add panels and ax...
236
237
238
239
240
241
242
243
244
245
246
        	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...
247
248
    	case 'instantPlot' :
    		//X Axis
7ef7ea02   Benjamin Renard   Add erase button ...
249
    		var recs = this.axes().add({id : 'xaxis_id'});
6a801541   Benjamin Renard   Add possibility t...
250
251
252
253
254
255
256
257
        	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...
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
    	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;
    	}
    },
    
22dd7e8c   Elena.Budnik   Redmine #5142 : l...
281
    createNewParam: function(paramId, paramComponents, isVector, onAfterCreate) {
dbb7bcbe   Benjamin Renard   Add curves defint...
282
    	this.set('last-param-id', this.get('last-param-id') + 1);
ced82260   Benjamin Renard   Get initial plot ...
283
284
285
    	
    	var emptyPanel = (this.params().getCount() == 0);
    	
fd5552a4   Benjamin Renard   Info for plot ele...
286
    	var recs = this.params().add({id : this.get('last-param-id')});
bb6e93d9   Benjamin Renard   Implement templat...
287
    	recs[0].set('paramid', paramId);
22dd7e8c   Elena.Budnik   Redmine #5142 : l...
288
     
63ac7745   Benjamin Renard   Support component...
289
    	if (paramComponents) {
690e0a87   Benjamin Renard   Add sum in table ...
290
291
292
293
294
295
296
297
298
299
300
301
    		if (paramComponents['index1']) {
    			recs[0].set('dim1-is-range', false);
    			recs[0].set('dim1-min-range', 0.);
    			recs[0].set('dim1-max-range', 0.);
    			recs[0].set('dim1-index', paramComponents['index1']);
    		}
    		if (paramComponents['index2']) {
    			recs[0].set('dim2-is-range', false);
    			recs[0].set('dim2-min-range', 0.);
    			recs[0].set('dim2-max-range', 0.);
    			recs[0].set('dim2-index', paramComponents['index2']);
    		}
63ac7745   Benjamin Renard   Support component...
302
    	}
22dd7e8c   Elena.Budnik   Redmine #5142 : l...
303
304
305
306
307
308
309
310
    	 
    	// 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 ...
311
312
    	amdaPlotObj.PlotObjectConfig.getParamConfig(paramId, function (success, data) {
    		var availableDrawingObjects = null;
22dd7e8c   Elena.Budnik   Redmine #5142 : l...
313
 
ced82260   Benjamin Renard   Get initial plot ...
314
    		//Change type only if the panel is empty!
35c71481   Benjamin Renard   Set predefined dr...
315
316
317
318
319
320
321
322
323
324
325
326
    		if (success) {
    			if (emptyPanel)
    				me.changePlotType(data.panel.plotType);
    			if (data.draw) {
    				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 ...
327
328
329
330
331
332
333
334
335
    		}
    		
    		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...
336

ced82260   Benjamin Renard   Get initial plot ...
337
338
339
340
341
342
    			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...
343
344
345
346
347
348
349
350
351
352
353
354
    			
    			//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 ...
355
356
357
358
359
360
    		}
    		
			me.dirty = true;
			
			onAfterCreate(recs[0]);
    	});
17433635   Benjamin Renard   Add series and sp...
361
362
363
364
365
366
367
368
    },
    
    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
369
    	this.dirty = true;
17433635   Benjamin Renard   Add series and sp...
370
371
372
    	return true;
    },
    
339866c4   Benjamin Renard   Add text legend d...
373
    createNewTextLegend: function() {
dbb7bcbe   Benjamin Renard   Add curves defint...
374
    	this.set('last-textlegend-id', this.get('last-textlegend-id') + 1);
fd5552a4   Benjamin Renard   Info for plot ele...
375
    	var recs = this.textLegends().add({id : this.get('last-textlegend-id')});
339866c4   Benjamin Renard   Add text legend d...
376
    	recs[0].setDefaultValues();
a971060f   Benjamin Renard   Fix some bugs
377
    	this.dirty = true;
339866c4   Benjamin Renard   Add text legend d...
378
379
380
381
382
383
384
385
386
    	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
387
    	this.dirty = true;
339866c4   Benjamin Renard   Add text legend d...
388
389
390
    	return true;
    },
    
829160b3   Benjamin Renard   Add constants def...
391
    createNewConstant: function() {
dbb7bcbe   Benjamin Renard   Add curves defint...
392
    	this.set('last-constant-id', this.get('last-constant-id') + 1);
fd5552a4   Benjamin Renard   Info for plot ele...
393
    	var recs = this.constants().add({id : this.get('last-constant-id')});
829160b3   Benjamin Renard   Add constants def...
394
    	recs[0].setDefaultValues();
a971060f   Benjamin Renard   Fix some bugs
395
    	this.dirty = true;
829160b3   Benjamin Renard   Add constants def...
396
397
398
399
400
401
402
403
404
    	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
405
    	this.dirty = true;
829160b3   Benjamin Renard   Add constants def...
406
407
408
    	return true;
    },
    
a8c54fb9   Benjamin Renard   Add text object p...
409
    createNewTextObject: function() {
dbb7bcbe   Benjamin Renard   Add curves defint...
410
    	this.set('last-textobj-id', this.get('last-textobj-id') + 1);
fd5552a4   Benjamin Renard   Info for plot ele...
411
    	var recs = this.textObjs().add({id : this.get('last-textobj-id')});
a8c54fb9   Benjamin Renard   Add text object p...
412
    	recs[0].setDefaultValues();
a971060f   Benjamin Renard   Fix some bugs
413
    	this.dirty = true;
a8c54fb9   Benjamin Renard   Add text object p...
414
415
416
417
418
419
420
421
422
    	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
423
    	this.dirty = true;
a8c54fb9   Benjamin Renard   Add text object p...
424
425
426
    	return true;
    },
    
dbb7bcbe   Benjamin Renard   Add curves defint...
427
428
    createNewCurve: function() {
    	this.set('last-curve-id', this.get('last-curve-id') + 1);
fd5552a4   Benjamin Renard   Info for plot ele...
429
    	var recs = this.curves().add({id : this.get('last-curve-id')});
dbb7bcbe   Benjamin Renard   Add curves defint...
430
    	recs[0].setDefaultValues();
a971060f   Benjamin Renard   Fix some bugs
431
    	this.dirty = true;
dbb7bcbe   Benjamin Renard   Add curves defint...
432
433
434
435
436
437
438
439
440
    	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
441
    	this.dirty = true;
dbb7bcbe   Benjamin Renard   Add curves defint...
442
443
444
    	return true;
    },
    
486cc3c7   Benjamin Renard   Add fill elements...
445
446
447
448
    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
449
    	this.dirty = true;
486cc3c7   Benjamin Renard   Add fill elements...
450
451
452
453
454
455
456
457
458
    	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
459
    	this.dirty = true;
486cc3c7   Benjamin Renard   Add fill elements...
460
461
462
    	return true;
    },
    
a971060f   Benjamin Renard   Fix some bugs
463
464
    changePlotType: function(plotType) {
    	if (plotType == this.get('panel-plot-type'))
a0bf9157   Benjamin Renard   Add tick plot and...
465
466
467
468
469
470
471
472
473
474
475
476
477
478
    		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
479
    			param.changeDrawingType(availableDrawingObjects[0].key);
a0bf9157   Benjamin Renard   Add tick plot and...
480
481
482
    		}
    	});
    	this.initAxes();
94abdb37   Benjamin Renard   Add params legend...
483
484
485
486
487
488
    	
    	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...
489
490
491
    		}
    	}
    	else
339866c4   Benjamin Renard   Add text legend d...
492
    	{
94abdb37   Benjamin Renard   Add params legend...
493
    		this.set('panel-legend-series', null);
339866c4   Benjamin Renard   Add text legend d...
494
495
    		this.textLegends().removeAll();
    	}
fd5552a4   Benjamin Renard   Info for plot ele...
496
497
498
499
500
501
    	
    	if ((plotType == 'tickPlot') || (plotType == 'statusPlot'))
    	{
    		this.textObjs().removeAll();
    		this.constants().removeAll();
    		this.curves().removeAll();
486cc3c7   Benjamin Renard   Add fill elements...
502
    		this.fills().removeAll();
fd5552a4   Benjamin Renard   Info for plot ele...
503
504
505
    	}
    	else if (plotType != 'xyPlot')
    		this.curves().removeAll();
a0bf9157   Benjamin Renard   Add tick plot and...
506
507
    },
    
abe09878   Benjamin Renard   Add panels and ax...
508
509
510
511
512
513
514
515
516
517
518
519
520
521
    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...
522
523
524
525
526
527
    	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...
528
529
530
531
532
533
534
535
536
537
538
    	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 ...
539
    	this.set('panel-scatter-isotropic', amdaPlotObj.PlotObjectConfig.defaultValues.panel.isotropic);
003ba315   Benjamin Renard   Add Epoch Plot an...
540
    	
a0bf9157   Benjamin Renard   Add tick plot and...
541
542
543
544
545
    	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...
546
547
    	this.set('panel-epoch-centertimeid', "");
    	
a971060f   Benjamin Renard   Fix some bugs
548
    	this.changePlotType(amdaPlotObj.PlotObjectConfig.defaultValues.panel.plotType);
abe09878   Benjamin Renard   Add panels and ax...
549
550
    },
    
fd5552a4   Benjamin Renard   Info for plot ele...
551
552
553
    getPanelShortInfo : function()
    {
    	var type = amdaPlotObj.PlotObjectConfig.getValueByKey(amdaPlotObj.PlotObjectConfig.availablePlotTypes, this.get('panel-plot-type'));
509bf9fa   Benjamin Renard   Replace panel ID ...
554
		var info = '#'+this.get('panel-index')+', '+type;
fd5552a4   Benjamin Renard   Info for plot ele...
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
		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
571
572
573
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
621
622
623
624
625
626
627
628
629
630
631
632
    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...
633
    getJsonValues : function() 
abe09878   Benjamin Renard   Add panels and ax...
634
635
636
    {
    	var panelValues  = new Object();
    	
dbb7bcbe   Benjamin Renard   Add curves defint...
637
638
    	panelValues['id'] = this.get('id');
    	
2a0b8d2c   Benjamin Renard   Restore node stat...
639
640
641
642
643
644
645
646
647
    	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 ...
648
649
    	panelValues['panel-index'] = this.get('panel-index');
    	
abe09878   Benjamin Renard   Add panels and ax...
650
651
652
653
654
655
656
657
658
659
    	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...
660
661
662
663
664
665
666
    	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...
667
668
669
670
671
672
673
674
675
676
677
678
679
680
    	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...
681
682
683
684
685
686
687
688
689
690
691
    	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...
692
693
694
    	if (this.get('panel-plot-type') == 'epochPlot')
    		panelValues['panel-epoch-centertimeid'] = this.get('panel-epoch-centertimeid');
    	
6a801541   Benjamin Renard   Add possibility t...
695
696
697
    	if (this.get('panel-plot-type') == 'instantPlot')
    		panelValues['panel-instant-time'] = this.get('panel-instant-time');
    	
a971060f   Benjamin Renard   Fix some bugs
698
    	if (this.get('panel-legend-series') != null)
94abdb37   Benjamin Renard   Add params legend...
699
700
    		panelValues['panel-series-legend'] = this.get('panel-legend-series').getJsonValues();
    	
339866c4   Benjamin Renard   Add text legend d...
701
702
703
704
705
706
    	panelValues['text-legends'] = [];
    	
    	this.textLegends().each(function (legend, index) {
    		panelValues['text-legends'][index] = legend.getJsonValues();
    	});
    	
829160b3   Benjamin Renard   Add constants def...
707
708
709
710
711
712
    	panelValues['constants'] = [];
    	
    	this.constants().each(function (constant, index) {
    		panelValues['constants'][index] = constant.getJsonValues();
    	});
    	
a8c54fb9   Benjamin Renard   Add text object p...
713
714
715
716
717
718
    	panelValues['textObjs'] = [];
    	
    	this.textObjs().each(function (textObj, index) {
    		panelValues['textObjs'][index] = textObj.getJsonValues();
    	});
    	
dbb7bcbe   Benjamin Renard   Add curves defint...
719
720
721
722
723
724
    	panelValues['curves'] = [];
    	
    	this.curves().each(function (curve, index) {
    		panelValues['curves'][index] = curve.getJsonValues();
    	});
    	
486cc3c7   Benjamin Renard   Add fill elements...
725
726
727
728
729
730
    	panelValues['fills'] = [];
    	
    	this.fills().each(function (fill, index) {
    		panelValues['fills'][index] = fill.getJsonValues();
    	});
    	
abe09878   Benjamin Renard   Add panels and ax...
731
732
733
734
735
736
    	panelValues['axes'] = [];
    	
    	this.axes().each(function (axe, index) {
    		panelValues['axes'][index] = axe.getJsonValues();
    	});
    	
17433635   Benjamin Renard   Add series and sp...
737
738
739
740
741
742
    	panelValues['params'] = [];
    	
    	this.params().each(function (param, index) {
    		panelValues['params'][index] = param.getJsonValues();
    	});
    	
dbb7bcbe   Benjamin Renard   Add curves defint...
743
744
745
746
747
    	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...
748
    	panelValues['last-fill-id'] = this.get('last-fill-id');
dbb7bcbe   Benjamin Renard   Add curves defint...
749
    	
abe09878   Benjamin Renard   Add panels and ax...
750
751
752
    	return panelValues;
    }
});