Blame view

js/app/models/PlotObjects/PlotRequestObject.js 5 KB
437c4dbc   Benjamin Renard   First implementat...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * Project      : AMDA-NG
 * Name         : PlotRequestObject.js
 * @class   amdaPlotObj.PlotRequestObject
 * @extends amdaModel.AmdaTimeObject
 * @brief   Plot Request Business Object Definition 
 * @author  Benjamin Renard
 * @version $Id: PlotRequestObject.js benjamin $
 ******************************************************************************
 *    FT Id     :   Date   : Name - Description
 ******************************************************************************
 *	:           :21/07/2015: BRE  - file creation
 */
 
 		
Ext.define('amdaPlotObj.PlotRequestObject', {
	extend: 'amdaModel.AmdaTimeObject',
	idProperty: 'id',
	
437c4dbc   Benjamin Renard   First implementat...
20
21
22
23
24
25
26
27
28
29
	requires: [
	           'amdaPlotObj.PlotObjectConfig',
	           'amdaPlotObj.PlotTabObject'
	],
	
	fields : [
	          {name: 'id', type:'string'},
              {name: 'file-format', type: 'string'},
              {name: 'file-output', type: 'string'},
              {name: 'file-prefix', type: 'string'},
dbb7bcbe   Benjamin Renard   Add curves defint...
30
31
              {name: 'one-file-per-interval', type: 'boolean'},
              {name: 'last-tab-id', type: 'int', defaultValue: 0}
437c4dbc   Benjamin Renard   First implementat...
32
33
34
35
    ],
    
    hasMany: {
    		model : 'amdaPlotObj.PlotTabObject',
18d4a11e   Benjamin Renard   Save and load plo...
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
    		name  : 'tabs',
    		associationKey:'tabs'
    },
    
    constructor: function(){
    	var me = this;
    	me.callParent(arguments);
        if ((arguments.length > 0) && arguments[0] && arguments[0].tabs)
        {
        	if (arguments[0].tabs)
        		me.loadTabs(arguments[0].tabs);
        }
        else
        {
        	//new object, set default fields values
        	me.setDefaultValues();
        	//New object, force the creation of the first tab
        	me.createNewTab();
        }
    },
    
    loadTabs: function(tabs)
    {
       this.tabs().loadData(tabs);
437c4dbc   Benjamin Renard   First implementat...
60
61
62
63
64
65
66
67
    },
    
    setDefaultValues: function()
    {
    	this.set('file-format', amdaPlotObj.PlotObjectConfig.defaultValues.file.format);
    	this.set('file-output', amdaPlotObj.PlotObjectConfig.defaultValues.file.output);
    	this.set('file-prefix', '');
    	this.set('one-file-per-interval', amdaPlotObj.PlotObjectConfig.defaultValues.file.oneFilePerInterval);
18d4a11e   Benjamin Renard   Save and load plo...
68
    	this.set('name', '');
437c4dbc   Benjamin Renard   First implementat...
69
70
    },
    
abe09878   Benjamin Renard   Add panels and ax...
71
    createNewTab: function() {
dbb7bcbe   Benjamin Renard   Add curves defint...
72
73
    	this.set('last-tab-id', this.get('last-tab-id') + 1);
    	var recs = this.tabs().add({id : this.get('last-tab-id')});
abe09878   Benjamin Renard   Add panels and ax...
74
    	recs[0].setDefaultValues();
a971060f   Benjamin Renard   Fix some bugs
75
    	this.dirty = true;
abe09878   Benjamin Renard   Add panels and ax...
76
77
78
		return recs[0];
    },
    
dbb7bcbe   Benjamin Renard   Add curves defint...
79
80
81
82
83
84
    removeTabById: function(tabId) {
    	//Retrieve tab record
    	var tabRecord = this.tabs().getById(tabId);
    	if (tabRecord == null)
    		return false;
    	this.tabs().remove(tabRecord);
a971060f   Benjamin Renard   Fix some bugs
85
    	this.dirty = true;
dbb7bcbe   Benjamin Renard   Add curves defint...
86
    	return true;
abe09878   Benjamin Renard   Add panels and ax...
87
88
    },
    
a971060f   Benjamin Renard   Fix some bugs
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
    isDirty : function()
    {
    	if (this.get('id') == '')
    		return false;
    	
    	if (this.dirty)
    		return true;
    	
    	var d = false;
    	this.tabs().each(function (tab, index) {
    		if (tab.isDirty())
    			d = true;
    	});
    	return d;
    },
    
437c4dbc   Benjamin Renard   First implementat...
105
106
107
108
109
110
111
112
113
114
    getJsonValues : function(hasId) 
    {
    	var requestValues  = new Object();
    	
    	requestValues['nodeType'] = 'request';
    	
    	if (hasId) {
    		requestValues['id'] = this.get('id');
        }
    	
18d4a11e   Benjamin Renard   Save and load plo...
115
116
    	requestValues['leaf'] = true;
    	
437c4dbc   Benjamin Renard   First implementat...
117
118
119
120
    	requestValues['file-format'] = this.get('file-format');
    	requestValues['file-output'] = this.get('file-output');
    	requestValues['file-prefix'] = this.get('file-prefix');
    	requestValues['one-file-per-interval'] = this.get('one-file-per-interval');
18d4a11e   Benjamin Renard   Save and load plo...
121
    	requestValues['name'] = this.get('name');
437c4dbc   Benjamin Renard   First implementat...
122
    	
003ba315   Benjamin Renard   Add Epoch Plot an...
123
    	requestValues['timesrc'] =  this.get('timesrc');       
437c4dbc   Benjamin Renard   First implementat...
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
        // if there's at least one timeTable name into 'timeTables' collection
        if (this.get('timesrc') == amdaModel.AmdaTimeObject.inputTimeSrc[0] && this.get('timeTables') && this.get('timeTables').length){
            // get complete timeTables collection
            var timeTables = this.get('timeTables');	    
            // init an empty array for timeTables
            requestValues['timeTables'] = [];
            // for each interval record
            Ext.Array.each(timeTables, function(item, index, all){
            	if (!item.$className) {
            		requestValues['timeTables'][index] = {timeTableName : item.timeTableName, id : item.id};
            	}
            	// get Json simplified value 
            	else {
            		requestValues['timeTables'][index] = item.getJsonValues();
            	}
            });            
        } else {
        	requestValues['startDate'] = this.get('startDate');	
            requestValues['stopDate'] = this.get('stopDate'); 
            requestValues['durationDay'] = this.get('durationDay');
            requestValues['durationHour'] = this.get('durationHour');
            requestValues['durationMin'] = this.get('durationMin');
            requestValues['durationSec'] = this.get('durationSec');
        }
    	
    	requestValues['tabs'] = [];
    	
    	this.tabs().each(function (tab, index) {
    		requestValues['tabs'][index] = tab.getJsonValues();
    	});
    	
fd5552a4   Benjamin Renard   Info for plot ele...
155
156
    	requestValues['last-tab-id'] = this.get('last-tab-id');
    	
437c4dbc   Benjamin Renard   First implementat...
157
158
159
        return requestValues;
    }
});