Download.js 4.14 KB
/**
 * Project      : AMDA-NG
 * Name         : Download.js
 * Description  : Download Request Business Object Definition
 * @class amdaModel.Download
 * @extends amdaModel.AmdaTimeObject 
 * @author myriam
 * @version $Id: Download.js 2068 2014-02-06 11:27:38Z elena $
 */
 
 		
Ext.define('amdaModel.Download', {
	extend: 'amdaModel.AmdaTimeObject',
    
	fields : [
		{name: 'type', type: 'string', defaultValue: 'Download'},
		{name: 'downloadSrc', type: 'string'},
		{name: 'list', defaultValue: null },    // array of parameters	  
		{name: 'timeformat', type: 'string'},
		{name: 'timeformatTT', type: 'string'},
		{name: 'structure', type: 'string'},
		{name: 'refparamSampling', type: 'boolean', defaultValue: false},
		{name: 'sampling', type: 'int', defaultValue: '600'},
		{name: 'fileprefix', type: 'string'},
		{name: 'fileformat', type: 'string'},
		{name: 'fileformatTT', type: 'string'},
		{name: 'compression', type: 'string'},
		{name: 'compressionTT', type: 'string'}
	],

	propertiesToCopy : 'id,name,downloadSrc,refparamSampling,sampling,list,timeformat,timeformatTT,structure,fileprefix,fileformat,fileformatTT,compression,compressionTT',

	getJsonValues : function(){

		var myValues  = new Object();       
		myValues.nodeType =  'download';//amdaModel.DownloadNode.nodeType;
		myValues.type = this.get('type');
		myValues.downloadSrc = this.get('downloadSrc');
		//Data download	 
		if (myValues.downloadSrc === '0') {	 // Data download 
			myValues.structure = this.get('structure');
			myValues.refparamSampling = this.get('refparamSampling');
			myValues.sampling = this.get('sampling');
			myValues.fileprefix = this.get('fileprefix');
		
			myValues.timesrc =  this.get('timesrc');
			// if there's at least one timeTable in case of Download data
			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
				myValues.timeTables=[];
				// for each interval record
				Ext.Array.each(timeTables, function(item, index, all){
					// get Json simplified value
					if (!item.$className) {
						myValues.timeTables[index] = {timeTableName : item.timeTableName, id : item.id};
					}
					// get Json simplified value 
					else {
						myValues.timeTables[index] = item.getJsonValues();
					}     
				});            
			} else {
				myValues.startDate = this.get('startDate');
				myValues.stopDate = this.get('stopDate');
				myValues.durationDay = this.get('durationDay');
				myValues.durationHour = this.get('durationHour');
				myValues.durationMin = this.get('durationMin');
				myValues.durationSec = this.get('durationSec');
			} 
         
			// if there's at least one parameter
			if (this.get('list') && this.get('list').length) {
				var list = this.get('list');
				myValues.list=[];					
				Ext.each(list, function(item, index){   
					myValues.list[index] = item.getJsonValues();
				});
			}  
			myValues.fileformat = this.get('fileformat');
			myValues.timeformat = this.get('timeformat');
			myValues.compression = this.get('compression');
		}
		// TT download
		else if (myValues.downloadSrc === '1') {
			// if there's at least one timeTable
			if (this.get('timeTables') && this.get('timeTables').length) {
				var list = this.get('timeTables');
				myValues.list=[];
				
				Ext.each(list, function(item, index){					
					var tt = new Object();
					tt.name = item.get('name');
					tt.id = item.get('id');					
					myValues.list[index] = tt;
				});  
			}
			myValues.fileformat = this.get('fileformatTT');
			myValues.timeformat = this.get('timeformatTT');
			myValues.compression = this.get('compressionTT');
		}
		// fits images download
		else { 
			myValues.list=[];
			if (this.get('list') && this.get('list').length)
			Ext.each(this.get('list'), function(item, index){  
				var image = new Object();
				image.name = item['name'];
				image.url  = item['url'];
				myValues.list[index] = image;
			});
			myValues.compression = this.get('compression');
		}
		myValues.leaf = true;
		//   myValues.nodeType = amdaModel.PlotNode.nodeType;
		return myValues;
	}      
});