/** * 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.DownloadConfig', { singleton: true, defaultValues: { timeformat: 'YYYY-MM-DDThh:mm:ss', timeformatTT: 'YYYY-MM-DDThh:mm:ss', fileformat: 'ASCII', fileformatTT: 'text', filecompress: 'tar+gzip', filecompressTT: 'tar+gzip', filestructure: '0' }, timeformatData: [ ['YYYY-MM-DDThh:mm:ss', 'YYYY-MM-DDThh:mm:ss.ms', 'ISO format with msecs'], ['DOY TIME', 'YYYYDOYhhmmssms', 'Day-Of-Year, 1 Jan => DOY = 1'], ['Timestamp', 'Seconds from 1970', 'Total of seconds from the Unix Epoch on January 1st, 1970 at UTC.'], ['YYYY MM DD hh mm ss', 'YYYY MM DD hh mm ss ms', 'date with spaces'], ['Timestamp-with-milliseconds', 'Seconds from 1970 with ms', 'Total of seconds from the Unix Epoch with milliseconds.'] ], fileformatData: [ ['ASCII', 'ASCII'], ['vot', 'VOTable'], ['cdf', 'CDF'], ['json', 'JSON'] ], fileformatTTData: [ ['text', 'plain text'], ['vot', 'VOTable'], ['space', 'HPEvent'] ], filecompressData: [ ['zip', 'zip'], ['tar+gzip', 'tar+gzip'] ], filecompressTTData: [ ['zip', 'zip'], ['tar+gzip', 'tar+gzip'], ['none', 'none'] ], filestructureData: [ ['0', 'All In One File'], ['1', 'One File Per Time Interval'], ['2', 'One File Per Param/Interval'] ] }); Ext.define('amdaModel.Download', { extend: 'amdaModel.AmdaTimeObject', requires: [ "amdaModel.DownloadParam" ], fields: [ { name: 'type', type: 'string', defaultValue: 'Download' }, { name: 'downloadSrc', type: 'string' }, { name: 'timeformat', type: 'string', defaultValue: amdaModel.DownloadConfig.defaultValues.timeformat }, { name: 'timeformatTT', type: 'string', defaultValue: amdaModel.DownloadConfig.defaultValues.timeformatTT }, { name: 'filestructure', type: 'string', defaultValue: amdaModel.DownloadConfig.defaultValues.filestructure }, { name: 'refparamSampling', type: 'boolean', defaultValue: true }, { name: 'separateInfoFile', type: 'boolean', defaultValue: false }, { name: 'sampling', type: 'float', defaultValue: '600' }, { name: 'scientificformat', type: 'boolean', defaultValue: true }, { name: 'fileprefix', type: 'string' }, { name: 'fileformat', type: 'string', defaultValue: amdaModel.DownloadConfig.defaultValues.fileformat }, { name: 'fileformatTT', type: 'string', defaultValue: amdaModel.DownloadConfig.defaultValues.fileformatTT }, { name: 'compression', type: 'string', defaultValue: amdaModel.DownloadConfig.defaultValues.filecompress }, { name: 'compressionTT', type: 'string', defaultValue: amdaModel.DownloadConfig.defaultValues.filecompressTT }, { name: 'last_update', type: 'int', defaultValue: 0 } ], associations: [{ type: 'hasMany', model: 'amdaModel.DownloadParam', name: 'params' }], propertiesToCopy: 'id,name,downloadSrc,refparamSampling,separateInfoFile,sampling,scientificformat,list,timeformat,timeformatTT,filestructure,fileprefix,fileformat,fileformatTT,compression,compressionTT', constructor: function () { var me = this; me.callParent(arguments); if ((arguments.length > 0) && arguments[0]) { if (arguments[0].list) me.loadParams(arguments[0].list); } this.dirty = false; }, loadParams: function (params) { /* 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; }); this.params().loadData(params); }, isDirty: function () { if (this.dirty) return true; var d = false; this.params().each(function (param, index) { if (param.dirty) d = true; }); return d; }, getJsonValues: function () { var myValues = new Object(); myValues.nodeType = 'download'; //amdaModel.DownloadNode.nodeType; myValues.type = this.get('type'); myValues.downloadSrc = this.get('downloadSrc'); myValues.name = this.get('name'); //Data download if (myValues.downloadSrc === '0') { // Data download myValues.filestructure = this.get('filestructure'); myValues.refparamSampling = this.get('refparamSampling'); myValues.separateInfoFile = this.get('separateInfoFile'); myValues.scientificformat = this.get('scientificformat'); 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 = Ext.Date.format(this.get('startDate'), 'Y-m-d\\TH:i:s.u'); myValues.stopDate = Ext.Date.format(this.get('stopDate'), 'Y-m-d\\TH:i:s.u'); myValues.durationDay = this.get('durationDay'); myValues.durationHour = this.get('durationHour'); myValues.durationMin = this.get('durationMin'); myValues.durationSec = this.get('durationSec'); myValues.durationMs = this.get('durationMs'); } // if there's at least one parameter myValues.list = [] this.params().each(function (param, index) { myValues.list[index] = param.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; } });