Commit 34d41fb32ce568bd3574c78e395de17a7420a4a4

Authored by Nathanaël Jourdane
1 parent bb3d4334

Fix eslint warnings

Showing 2 changed files with 453 additions and 367 deletions   Show diff stats
js/.eslintrc.yml
@@ -7,18 +7,17 @@ plugins: @@ -7,18 +7,17 @@ plugins:
7 - extjs 7 - extjs
8 rules: 8 rules:
9 indent: [error, 2, SwitchCase: 1] 9 indent: [error, 2, SwitchCase: 1]
10 - semi: [warn, never] 10 + semi: [error, always]
11 max-len: [error, code: 120] 11 max-len: [error, code: 120]
12 - max-lines: [error, 600] 12 + max-lines: [warn, 600]
13 linebreak-style: [error, unix] 13 linebreak-style: [error, unix]
14 quotes: [error, single] 14 quotes: [error, single]
15 strict: [error, global] 15 strict: [error, global]
16 quote-props: [error, as-needed] 16 quote-props: [error, as-needed]
17 max-statements: [warn, 20] 17 max-statements: [warn, 20]
18 - array-bracket-newline: [warn, consistent]  
19 consistent-this: [error, me] 18 consistent-this: [error, me]
20 padded-blocks: off 19 padded-blocks: off
21 - no-tabs: off 20 + newline-per-chained-call: [error, ignoreChainWithDepth: 3]
22 no-warning-comments: off 21 no-warning-comments: off
23 func-names: off 22 func-names: off
24 function-paren-newline: off 23 function-paren-newline: off
js/app/views/UploadPanelUI.js
1 /** 1 /**
2 - * Project  : AMDA-NG  
3 - * Name : UploadUI.js  
4 - * @class amdaUI.UploadUI  
5 - * @extends Ext.form.Panel  
6 - * @brief Upload Panel UI definition (View)  
7 - * @author Elena  
8 - * @version $Id: UploadPanelUI.js 2831 2015-03-26 10:33:42Z elena $ 2 + * Project: AMDA-NG
  3 + * Name: UploadUI.js
  4 + * @class amdaUI.UploadUI
  5 + * @extends Ext.form.panel
  6 + * @brief Upload Panel UI definition (View)
  7 + * @author Elena
  8 + * @version $Id: UploadPanelUI.js 2831 2015-03-26 10:33:42Z elena $
9 */ 9 */
10 10
  11 +/* global AmdaAction, myDesktopApp, amdaModel, loadMask */
  12 +
  13 +/**
  14 + * @typedef {AmdaApp} myDesktopApp
  15 + * @typedef {Object} AmdaAction
  16 + * @typedef {Object} Ext
  17 + */
  18 +
  19 +'use strict';
11 Ext.define('amdaUI.UploadPanelUI', { 20 Ext.define('amdaUI.UploadPanelUI', {
12 extend: 'Ext.form.Panel', 21 extend: 'Ext.form.Panel',
13 alias: 'widget.panelUpload', 22 alias: 'widget.panelUpload',
14 23
15 - requires: [  
16 - 'amdaUI.RemoteSearchPlugin'  
17 - ], 24 + requires: ['amdaUI.RemoteSearchPlugin'],
18 25
19 isFile: true, 26 isFile: true,
20 isTimeTable: false, 27 isTimeTable: false,
@@ -22,36 +29,40 @@ Ext.define('amdaUI.UploadPanelUI', { @@ -22,36 +29,40 @@ Ext.define('amdaUI.UploadPanelUI', {
22 29
23 constructor: function (config) { 30 constructor: function (config) {
24 this.init(config); 31 this.init(config);
25 - this.callParent(arguments); 32 + this.superclass.constructor.apply(this, arguments);
26 }, 33 },
27 34
28 /* 35 /*
29 - * create MyData linked node and edit in module MyData  
30 - * update myDataParams info if needed  
31 - */ 36 + * Create MyData linked node and edit in module MyData
  37 + * Update myDataParams info if needed
  38 + */
32 getObjectCallback: function (result, remoteEvent) { 39 getObjectCallback: function (result, remoteEvent) {
33 - var t = remoteEvent.getTransaction(); 40 + var linkedFile, me, paramObj, t;
  41 +
  42 + t = remoteEvent.getTransaction();
34 if (result && !result.error) { 43 if (result && !result.error) {
35 - // set parameter into node  
36 - var me = this; 44 + // Set parameter into node
  45 + me = this;
37 myDesktopApp.getLoadedModule(this.tmpNode.get('moduleId'), true, function (module) { 46 myDesktopApp.getLoadedModule(this.tmpNode.get('moduleId'), true, function (module) {
38 - // myData  
39 - if (me.tmpNode.get('nodeType') == amdaModel.MyDataParamNode.nodeType) {  
40 - var linkedFile = Ext.create('amdaModel.MyDataNode', {leaf: true, text: me.tmpNode.get('text')});  
41 - 47 + // MyData
  48 + if (me.tmpNode.get('nodeType') === amdaModel.MyDataParamNode.nodeType) {
  49 + linkedFile = Ext.create('amdaModel.MyDataNode', {
  50 + leaf: true,
  51 + text: me.tmpNode.get('text')
  52 + });
42 linkedFile.create(result.mask, result.description, result.maskDesc); 53 linkedFile.create(result.mask, result.description, result.maskDesc);
43 linkedFile.updateMyDataParam(result.mask, result.maskDesc); 54 linkedFile.updateMyDataParam(result.mask, result.maskDesc);
44 55
45 - if (!linkedFile.get('id')) 56 + if (!linkedFile.get('id')) {
46 linkedFile.set('id', me.tmpNode.get('text')); 57 linkedFile.set('id', me.tmpNode.get('text'));
  58 + }
47 59
48 - var paramObj = Ext.create(linkedFile.get('objectDataModel'), result); 60 + paramObj = Ext.create(linkedFile.get('objectDataModel'), result);
49 linkedFile.set('object', paramObj); 61 linkedFile.set('object', paramObj);
50 me.tmpNode.set('fileObject', paramObj); 62 me.tmpNode.set('fileObject', paramObj);
51 - }  
52 - else { 63 + } else {
53 // Time Table or Catalog 64 // Time Table or Catalog
54 - var paramObj = Ext.create(me.tmpNode.get('objectDataModel'), result); 65 + paramObj = Ext.create(me.tmpNode.get('objectDataModel'), result);
55 66
56 paramObj.set('fromPlugin', true); 67 paramObj.set('fromPlugin', true);
57 if (result.intervals) { 68 if (result.intervals) {
@@ -65,121 +76,125 @@ Ext.define('amdaUI.UploadPanelUI', { @@ -65,121 +76,125 @@ Ext.define('amdaUI.UploadPanelUI', {
65 module.linkedNode.editInModule(); 76 module.linkedNode.editInModule();
66 } 77 }
67 }); 78 });
68 - }  
69 - else { 79 + } else {
70 // EXCEPTION : parameter not found ! 80 // EXCEPTION : parameter not found !
71 - myDesktopApp.errorMsg(t.action + "." + t.method + " : No parameter '" + this.tmpNode.get('text') + "' found!"); 81 + myDesktopApp.errorMsg(t.action + '.' + t.method + ' : No parameter "' + this.tmpNode.get('text') + '" found!');
72 } 82 }
73 loadMask.hide(); 83 loadMask.hide();
74 }, 84 },
75 85
76 /* 86 /*
77 - * form validation  
78 - * TODO markInvalid()?  
79 - */ 87 + * Form validation
  88 + * TODO markInvalid()?
  89 + */
80 validate: function () { 90 validate: function () {
81 - var values = this.getForm().getValues();  
82 -  
83 - if (values['filesrc'] == 'LOCAL') {  
84 - if (this.isFile) var locFile = this.getForm().findField('localFileName').getValue();  
85 - else if (this.isTimeTable) var locFile = this.getForm().findField('localTTName').getValue();  
86 - else var locFile = this.getForm().findField('localCatName').getValue(); 91 + var locFile, values;
  92 + values = this.getForm().getValues();
  93 +
  94 + if (values.filesrc === 'LOCAL') {
  95 + if (this.isFile) {
  96 + locFile = this.getForm().findField('localFileName').getValue();
  97 + } else if (this.isTimeTable) {
  98 + locFile = this.getForm().findField('localTTName').getValue();
  99 + } else {
  100 + locFile = this.getForm().findField('localCatName').getValue();
  101 + }
87 102
88 if (!locFile) { 103 if (!locFile) {
89 - myDesktopApp.warningMsg("Select File to Upload");  
90 - return false;  
91 - }  
92 - }  
93 - else {  
94 - if (!values['remoteFile'] && !values['remoteTT'] && !values['remoteCat']) {  
95 - myDesktopApp.warningMsg("Select File to Upload"); 104 + myDesktopApp.warningMsg('Select File to Upload');
96 return false; 105 return false;
97 } 106 }
  107 + } else if (!values.remoteFile && !values.remoteTT && !values.remoteCat) {
  108 + myDesktopApp.warningMsg('Select File to Upload');
  109 + return false;
98 } 110 }
99 return true; 111 return true;
100 }, 112 },
101 113
102 114
103 - //TODO proper parsing 115 + // TODO proper parsing
104 updateFormat: function (value) { 116 updateFormat: function (value) {
105 - var arrayOfStr = value.split('.');  
106 - //TODO use down method? 117 + var arrayOfStr, autoFormat, radios, suffix, userFormat, userFormatObj;
  118 +
  119 + arrayOfStr = value.split('.');
  120 + // TODO use down method?
107 if (this.isFile) { 121 if (this.isFile) {
108 - var radios = Ext.getCmp('filefrmt');  
109 - var user_format_obj = radios.getValue();  
110 - var user_format = user_format_obj.filefrmt;  
111 - }  
112 - else if (this.isTimeTable) {  
113 - var radios = Ext.getCmp('ttfrmt');  
114 - var user_format_obj = radios.getValue();  
115 - var user_format = user_format_obj.ttfrmt;  
116 - }  
117 - else {  
118 - var radios = Ext.getCmp('catfrmt');  
119 - var user_format_obj = radios.getValue();  
120 - var user_format = user_format_obj.catfrmt; 122 + radios = Ext.getCmp('filefrmt');
  123 + userFormatObj = radios.getValue();
  124 + userFormat = userFormatObj.filefrmt;
  125 + } else if (this.isTimeTable) {
  126 + radios = Ext.getCmp('ttfrmt');
  127 + userFormatObj = radios.getValue();
  128 + userFormat = userFormatObj.ttfrmt;
  129 + } else {
  130 + radios = Ext.getCmp('catfrmt');
  131 + userFormatObj = radios.getValue();
  132 + userFormat = userFormatObj.catfrmt;
121 } 133 }
122 134
123 - var auto_format = user_format; 135 + autoFormat = userFormat;
124 136
125 - // auto define format in some special cases  
126 - //TODO name without extention => ASCII?  
127 - if (arrayOfStr.length == 1) auto_format = 'ASCII';  
128 - else {  
129 - var suffix = arrayOfStr[arrayOfStr.length - 1].toLowerCase();  
130 - if (suffix == 'gz') 137 + // Auto define format in some special cases TODO: name without extention => ASCII?
  138 + if (arrayOfStr.length === 1) {
  139 + autoFormat = 'ASCII';
  140 + } else {
  141 + suffix = arrayOfStr[arrayOfStr.length - 1].toLowerCase();
  142 + if (suffix === 'gz') {
131 suffix = arrayOfStr[arrayOfStr.length - 2].toLowerCase() + '.gz'; 143 suffix = arrayOfStr[arrayOfStr.length - 2].toLowerCase() + '.gz';
  144 + }
132 145
133 switch (suffix) { 146 switch (suffix) {
134 - case 'cdf' :  
135 - auto_format = 'CDF'; 147 + case 'cdf':
  148 + autoFormat = 'CDF';
136 break; 149 break;
137 - case 'cef.gz' :  
138 - case 'cef' :  
139 - auto_format = 'CEF'; 150 + case 'cef.gz':
  151 + case 'cef':
  152 + autoFormat = 'CEF';
140 break; 153 break;
141 - case 'xml' :  
142 - auto_format = 'VOT';  
143 - case 'vot' :  
144 - auto_format = 'VOT'; 154 + case 'xml':
  155 + autoFormat = 'VOT';
145 break; 156 break;
146 - case 'nc' :  
147 - auto_format = 'NC'; 157 + case 'vot':
  158 + autoFormat = 'VOT';
148 break; 159 break;
149 - case 'asc' :  
150 - case 'txt' :  
151 - default :  
152 - auto_format = 'ASCII'; 160 + case 'nc':
  161 + autoFormat = 'NC';
  162 + break;
  163 + case 'asc':
  164 + case 'txt':
  165 + default:
  166 + autoFormat = 'ASCII';
153 } 167 }
154 } 168 }
155 - // set auto format : case when format was not set by user before  
156 - if (this.isFile && user_format !== auto_format) {  
157 - user_format_obj.filefrmt = auto_format;  
158 - } else if (this.isTimeTable && user_format !== auto_format) {  
159 - user_format_obj.ttfrmt = auto_format;  
160 - } else if (!this.isFile && !this.isTimeTable && user_format !== auto_format) {  
161 - user_format_obj.catfrmt = auto_format; 169 + // Set auto format : case when format was not set by user before
  170 + if (this.isFile && userFormat !== autoFormat) {
  171 + userFormatObj.filefrmt = autoFormat;
  172 + } else if (this.isTimeTable && userFormat !== autoFormat) {
  173 + userFormatObj.ttfrmt = autoFormat;
  174 + } else if (!this.isFile && !this.isTimeTable && userFormat !== autoFormat) {
  175 + userFormatObj.catfrmt = autoFormat;
162 } 176 }
163 177
164 - radios.setValue(user_format_obj); 178 + radios.setValue(userFormatObj);
165 }, 179 },
166 180
167 /* 181 /*
168 - *  
169 - */ 182 + * Force upload
  183 + */
170 forceUpload: function (url, format, onFinish) { 184 forceUpload: function (url, format, onFinish) {
171 - var me = this;  
172 - var re = /http:\/\/127.0.0.1:/;  
173 - var isRemoteUrl = !re.test(url); 185 + var isRemoteUrl, me, onFinishAll, onLoad, re;
  186 + me = this;
  187 + re = /http:\/\/127.0.0.1:/;
  188 + isRemoteUrl = !re.test(url);
174 189
175 switch (format) { 190 switch (format) {
176 - case 'votable' : 191 + case 'votable':
177 this.getForm().findField('filefrmt').setValue('VOT'); 192 this.getForm().findField('filefrmt').setValue('VOT');
178 break; 193 break;
179 - case 'cdf' : 194 + case 'cdf':
180 this.getForm().findField('filefrmt').setValue('CDF'); 195 this.getForm().findField('filefrmt').setValue('CDF');
181 break; 196 break;
182 - default : 197 + default:
183 myDesktopApp.errorMsg('Not supported data receive from SAMP'); 198 myDesktopApp.errorMsg('Not supported data receive from SAMP');
184 return; 199 return;
185 } 200 }
@@ -187,25 +202,28 @@ Ext.define('amdaUI.UploadPanelUI', { @@ -187,25 +202,28 @@ Ext.define('amdaUI.UploadPanelUI', {
187 if (!isRemoteUrl) { 202 if (!isRemoteUrl) {
188 myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.interop.id, true, function (module) { 203 myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.interop.id, true, function (module) {
189 var onError = function (error) { 204 var onError = function (error) {
190 - if (error) 205 + if (error) {
191 myDesktopApp.errorMsg(error); 206 myDesktopApp.errorMsg(error);
192 - else  
193 - myDesktopApp.errorMsg("Cannot load data from this SAMP notification");  
194 - if (onFinish) 207 + } else {
  208 + myDesktopApp.errorMsg('Cannot load data from this SAMP notification');
  209 + }
  210 + if (onFinish) {
195 onFinish(); 211 onFinish();
  212 + }
196 }; 213 };
197 - var onLoad = function (data) {  
198 - //Fake value for validation 214 + onLoad = function (data) {
  215 + // Fake value for validation
199 Ext.form.field.File.superclass.setValue.call(me.getForm().findField('localFileName'), 'samp.vot'); 216 Ext.form.field.File.superclass.setValue.call(me.getForm().findField('localFileName'), 'samp.vot');
200 me.getForm().findField('filesrc').setValue('LOCAL'); 217 me.getForm().findField('filesrc').setValue('LOCAL');
201 - //Add data related to the samp notification 218 + // Add data related to the samp notification
202 me.getForm().findField('sampFileName').setValue('samp.vot'); 219 me.getForm().findField('sampFileName').setValue('samp.vot');
203 me.getForm().findField('sampData').setValue(data); 220 me.getForm().findField('sampData').setValue(data);
204 - var onFinishAll = function () { 221 + onFinishAll = function () {
205 me.getForm().findField('sampFileName').reset(); 222 me.getForm().findField('sampFileName').reset();
206 me.getForm().findField('sampData').reset(); 223 me.getForm().findField('sampData').reset();
207 - if (onFinish) 224 + if (onFinish) {
208 onFinish(); 225 onFinish();
  226 + }
209 }; 227 };
210 me.postUpload(onFinishAll); 228 me.postUpload(onFinishAll);
211 }; 229 };
@@ -220,29 +238,35 @@ Ext.define('amdaUI.UploadPanelUI', { @@ -220,29 +238,35 @@ Ext.define('amdaUI.UploadPanelUI', {
220 }, 238 },
221 239
222 /* 240 /*
223 - *  
224 - */ 241 + * Post upload
  242 + */
225 postUpload: function (onFinish) { 243 postUpload: function (onFinish) {
226 // 'global' form containing 'partial' forms 244 // 'global' form containing 'partial' forms
227 var form = this.getForm(); 245 var form = this.getForm();
228 246
229 - // special validation 247 + // Special validation
230 if (this.validate()) { 248 if (this.validate()) {
231 loadMask.show(); 249 loadMask.show();
232 form.submit({ 250 form.submit({
233 scope: this, 251 scope: this,
234 url: 'php/uploadFile.php', 252 url: 'php/uploadFile.php',
235 waitMsg: 'Uploading your file...', 253 waitMsg: 'Uploading your file...',
236 - success: function (form, o) {  
237 - if (onFinish) 254 + success: function (onSuccessForm, o) {
  255 + if (onFinish) {
238 onFinish(); 256 onFinish();
239 - this.tmpNode = Ext.create(this.nodeType, {leaf: true, text: o.result.file});  
240 - AmdaAction.getUploadedObject(o.result.file, o.result.format, this.tmpNode.get('nodeType'), this.getObjectCallback, this); 257 + }
  258 + this.tmpNode = Ext.create(this.nodeType, {
  259 + leaf: true,
  260 + text: o.result.file
  261 + });
  262 + AmdaAction.getUploadedObject(o.result.file, o.result.format,
  263 + this.tmpNode.get('nodeType'), this.getObjectCallback, this);
241 loadMask.hide(); 264 loadMask.hide();
242 }, 265 },
243 - failure: function (form, o) {  
244 - if (onFinish) 266 + failure: function (onFailureForm, o) {
  267 + if (onFinish) {
245 onFinish(); 268 onFinish();
  269 + }
246 loadMask.hide(); 270 loadMask.hide();
247 myDesktopApp.errorMsg('Error ' + o.result.error); 271 myDesktopApp.errorMsg('Error ' + o.result.error);
248 } 272 }
@@ -251,98 +275,135 @@ Ext.define('amdaUI.UploadPanelUI', { @@ -251,98 +275,135 @@ Ext.define('amdaUI.UploadPanelUI', {
251 }, 275 },
252 276
253 /* 277 /*
254 - * panel config  
255 - */ 278 + * Panel config
  279 + */
256 init: function (config) { 280 init: function (config) {
257 - this.isFile = config.panelType == 'file' ? true : false;  
258 - this.isTimeTable = config.panelType == 'timetable' ? true : false; 281 + var combo, dayStart, fieldcontainer, fileFormat, form, items, local, localFile, localUploadName, myConf,
  282 + nonStandardFormat, radioId, remote, remoteFile, remoteUploadName, sampling, site, store, timeFormat, timeFormatId,
  283 + title, uploadForm;
  284 + this.isFile = config.panelType === 'file';
  285 + this.isTimeTable = config.panelType === 'timetable';
259 286
260 - // file / time table / catalog settings 287 + // File / time table / catalog settings
261 if (this.isFile) { 288 if (this.isFile) {
262 - var title = 'File';  
263 - var items = [ 289 + title = 'File';
  290 + items = [
264 { 291 {
265 - boxLabel: 'ASCII', name: 'filefrmt', inputValue: 'ASCII', checked: true,  
266 - listeners:  
267 - {  
268 - change: function (cb, nv, ov) {  
269 - if (nv) Ext.getCmp('tf').show();  
270 - else Ext.getCmp('tf').hide(); 292 + boxLabel: 'ASCII',
  293 + name: 'filefrmt',
  294 + inputValue: 'ASCII',
  295 + checked: true,
  296 + listeners: {
  297 + change: function (cb, nv) {
  298 + if (nv) {
  299 + Ext.getCmp('tf').show();
  300 + } else {
  301 + Ext.getCmp('tf').hide();
271 } 302 }
272 } 303 }
  304 + }
273 }, 305 },
274 { 306 {
275 - boxLabel: 'netCDF&nbsp;<img amda_clicktip="ncTimeFormat" style="vertical-align:bottom" src="js/resources/images/16x16/info_mini.png"', 307 + boxLabel: 'netCDF&nbsp;<img amda_clicktip="ncTimeFormat" style="vertical-align:bottom" ' +
  308 + 'src="js/resources/images/16x16/info_mini.png"',
276 name: 'filefrmt', 309 name: 'filefrmt',
277 inputValue: 'NC' 310 inputValue: 'NC'
278 }, 311 },
279 { 312 {
280 - boxLabel: 'CDF&nbsp;<img amda_clicktip="cdfTimeFormat" style="vertical-align:bottom" src="js/resources/images/16x16/info_mini.png"', 313 + boxLabel: 'CDF&nbsp;<img amda_clicktip="cdfTimeFormat" style="vertical-align:bottom" ' +
  314 + 'src="js/resources/images/16x16/info_mini.png"',
281 name: 'filefrmt', 315 name: 'filefrmt',
282 inputValue: 'CDF' 316 inputValue: 'CDF'
283 }, 317 },
284 // { boxLabel: 'CEF[GZ]', name: 'filefrmt', inputValue: 'CEF' }, 318 // { boxLabel: 'CEF[GZ]', name: 'filefrmt', inputValue: 'CEF' },
285 - {boxLabel: 'VOTable', name: 'filefrmt', inputValue: 'VOT'}];  
286 - var timeFormatId = 'tf'; 319 + {
  320 + boxLabel: 'VOTable',
  321 + name: 'filefrmt',
  322 + inputValue: 'VOT'
  323 + }
  324 + ];
  325 + timeFormatId = 'tf';
287 this.formatId = 'nsf'; 326 this.formatId = 'nsf';
288 this.localUploadId = 'form-uploadfile'; 327 this.localUploadId = 'form-uploadfile';
289 - var localUploadName = 'localFileName';  
290 - var remoteUploadName = 'remoteFile'; 328 + localUploadName = 'localFileName';
  329 + remoteUploadName = 'remoteFile';
291 this.remoteUploadId = 'form-uploadurl'; 330 this.remoteUploadId = 'form-uploadurl';
292 this.nodeType = 'amdaModel.MyDataParamNode'; 331 this.nodeType = 'amdaModel.MyDataParamNode';
293 - //TODO load XML  
294 - var store = Ext.create('Ext.data.Store', {  
295 - fields: ['value', 'name'], 332 + // TODO load XML
  333 + store = Ext.create('Ext.data.Store', {
  334 + fields: [
  335 + 'value',
  336 + 'name'
  337 + ],
296 data: [ 338 data: [
297 - {"value": "ftp://cdaweb.gsfc.nasa.gov/pub/data/", "name": "CDAWEB/FTP"}/*,  
298 - {"value":"ftp://ftp.ngdc.noaa.gov/STP/SOLAR_DATA/", "name":"Solar Data"}*/] 339 + {
  340 + value: 'ftp://cdaweb.gsfc.nasa.gov/pub/data/',
  341 + name: 'CDAWEB/FTP'
  342 + }
  343 + ]
  344 + // {'value': 'ftp://ftp.ngdc.noaa.gov/STP/SOLAR_DATA/', 'name': 'Solar Data'}
299 }); 345 });
300 - }  
301 - else if (this.isTimeTable) {  
302 - var title = 'Time Table';  
303 - var items = [ 346 + } else if (this.isTimeTable) {
  347 + title = 'Time Table';
  348 + items = [
304 { 349 {
305 - boxLabel: 'ASCII&nbsp;<img amda_clicktip="ttTimeFormat" style="vertical-align:bottom" src="js/resources/images/16x16/info_mini.png"', 350 + boxLabel: 'ASCII&nbsp;<img amda_clicktip="ttTimeFormat" style="vertical-align:bottom" ' +
  351 + 'src="js/resources/images/16x16/info_mini.png"',
306 name: 'ttfrmt', 352 name: 'ttfrmt',
307 inputValue: 'ASCII', 353 inputValue: 'ASCII',
308 checked: true 354 checked: true
309 }, 355 },
310 - {boxLabel: 'VOTable', name: 'ttfrmt', inputValue: 'VOT'} 356 + {
  357 + boxLabel: 'VOTable',
  358 + name: 'ttfrmt',
  359 + inputValue: 'VOT'
  360 + }
311 ]; 361 ];
312 - var timeFormatId = 'tf_tt'; 362 + timeFormatId = 'tf_tt';
313 this.formatId = 'nsf_tt'; 363 this.formatId = 'nsf_tt';
314 this.localUploadId = 'form-uploadtt'; 364 this.localUploadId = 'form-uploadtt';
315 - var localUploadName = 'localTTName';  
316 - var remoteUploadName = 'remoteTT'; 365 + localUploadName = 'localTTName';
  366 + remoteUploadName = 'remoteTT';
317 this.remoteUploadId = 'form-uploadtturl'; 367 this.remoteUploadId = 'form-uploadtturl';
318 this.nodeType = 'amdaModel.TimeTableNode'; 368 this.nodeType = 'amdaModel.TimeTableNode';
319 - //TODO load XML  
320 - var store = Ext.create('Ext.data.Store', {  
321 - fields: ['value', 'name'], 369 + // TODO load XML
  370 + store = Ext.create('Ext.data.Store', {
  371 + fields: [
  372 + 'value',
  373 + 'name'
  374 + ],
322 data: [] 375 data: []
323 }); 376 });
324 - }  
325 - else {  
326 - var title = 'Catalog';  
327 - var items = [  
328 - {boxLabel: 'VOTable', name: 'catfrmt', inputValue: 'VOT', checked: true}]; 377 + } else {
  378 + title = 'Catalog';
  379 + items = [
  380 + {
  381 + boxLabel: 'VOTable',
  382 + name: 'catfrmt',
  383 + inputValue: 'VOT',
  384 + checked: true
  385 + }
  386 + ];
329 387
330 - var timeFormatId = 'tf_cat'; 388 + timeFormatId = 'tf_cat';
331 this.formatId = 'nsf_cat'; 389 this.formatId = 'nsf_cat';
332 this.localUploadId = 'form-uploadcat'; 390 this.localUploadId = 'form-uploadcat';
333 - var localUploadName = 'localCatName';  
334 - var remoteUploadName = 'remoteCat'; 391 + localUploadName = 'localCatName';
  392 + remoteUploadName = 'remoteCat';
335 393
336 this.remoteUploadId = 'form-uploadcaturl'; 394 this.remoteUploadId = 'form-uploadcaturl';
337 this.nodeType = 'amdaModel.CatalogNode'; 395 this.nodeType = 'amdaModel.CatalogNode';
338 - //TODO load XML  
339 - var store = Ext.create('Ext.data.Store', {  
340 - fields: ['value', 'name'], 396 + // TODO load XML
  397 + store = Ext.create('Ext.data.Store', {
  398 + fields: [
  399 + 'value',
  400 + 'name'
  401 + ],
341 data: [] 402 data: []
342 }); 403 });
343 } 404 }
344 405
345 - var combo = Ext.create('Ext.form.ComboBox', { 406 + combo = Ext.create('Ext.form.ComboBox', {
346 flex: 4, 407 flex: 4,
347 store: store, 408 store: store,
348 emptyText: 'Enter Remote Site URL (ftp)', 409 emptyText: 'Enter Remote Site URL (ftp)',
@@ -351,114 +412,124 @@ Ext.define(&#39;amdaUI.UploadPanelUI&#39;, { @@ -351,114 +412,124 @@ Ext.define(&#39;amdaUI.UploadPanelUI&#39;, {
351 valueField: 'value' 412 valueField: 'value'
352 }); 413 });
353 414
354 - var fieldcontainer =  
355 - {  
356 - xtype: 'fieldcontainer',  
357 - fieldLabel: ' ', labelWidth: 0, labelSeparator: '', labelPad: 0,  
358 - layout: 'hbox',  
359 - items: [  
360 - combo,  
361 - {  
362 - xtype: 'button',  
363 - flex: 1,  
364 - text: 'Browse It',  
365 - handler: function () {  
366 - var form = this.up('form').getForm();  
367 - var site = form.getFields().getAt(0).getValue();  
368 - if (site)  
369 - this.up('form').ownerCt.fireEvent('open', site);  
370 - else  
371 - myDesktopApp.warningMsg("Please Enter Remote Site URL"); 415 + fieldcontainer = {
  416 + xtype: 'fieldcontainer',
  417 + fieldLabel: ' ',
  418 + labelWidth: 0,
  419 + labelSeparator: '',
  420 + labelPad: 0,
  421 + layout: 'hbox',
  422 + items: [
  423 + combo,
  424 + {
  425 + xtype: 'button',
  426 + flex: 1,
  427 + text: 'Browse It',
  428 + handler: function () {
  429 + form = this.up('form').getForm();
  430 + site = form.getFields().getAt(0).getValue();
  431 + if (site) {
  432 + this.up('form').ownerCt.fireEvent('open', site);
  433 + } else {
  434 + myDesktopApp.warningMsg('Please Enter Remote Site URL');
372 } 435 }
373 - }]  
374 - }; 436 + }
  437 + }
  438 + ]
  439 + };
375 440
376 - if (this.isFile) var radioId = 'filefrmt';  
377 - else if (this.isTimeTable) var radioId = 'ttfrmt';  
378 - else var radioId = 'catfrmt'; 441 + if (this.isFile) {
  442 + radioId = 'filefrmt';
  443 + } else if (this.isTimeTable) {
  444 + radioId = 'ttfrmt';
  445 + } else {
  446 + radioId = 'catfrmt';
  447 + }
379 448
380 - var fileFormat = Ext.create('Ext.form.FieldSet', { 449 + fileFormat = Ext.create('Ext.form.FieldSet', {
381 title: 'File Format', 450 title: 'File Format',
382 - items: [{  
383 - xtype: 'radiogroup',  
384 - id: radioId,  
385 - columns: 3,  
386 - cls: 'x-check-group-alt',  
387 - items: items  
388 - }] 451 + items: [
  452 + {
  453 + xtype: 'radiogroup',
  454 + id: radioId,
  455 + columns: 3,
  456 + cls: 'x-check-group-alt',
  457 + items: items
  458 + }
  459 + ]
389 }); 460 });
390 461
391 - var Sampling =  
392 - {  
393 - xtype: 'radiogroup',  
394 - fieldLabel: 'Time Sampling',  
395 - labelWidth: 90,  
396 - cls: 'x-check-group-alt',  
397 - hidden: !this.isFile,  
398 - defaults: {name: 'timesmpl'},  
399 - items: [  
400 - {boxLabel: 'constant', inputValue: 'constant', checked: true},  
401 - {  
402 - boxLabel: 'variable&nbsp;<img amda_clicktip="variableSampling" style="vertical-align:bottom" src="js/resources/images/16x16/info_mini.png"',  
403 - inputValue: 'variable'  
404 - }  
405 - ]  
406 - };  
407 -  
408 - var dayStart =  
409 - {  
410 - xtype: 'checkbox',  
411 - name: 'doy',  
412 - hidden: true,  
413 - fieldLabel: 'DOY starts from 1',  
414 - inputValue: '1'  
415 - };  
416 -  
417 - var nonStandardFormat =  
418 - {  
419 - xtype: 'fieldcontainer',  
420 - defaultType: 'textfield',  
421 - layout: 'anchor',  
422 - defaults:  
423 - {  
424 - layout: '100%',  
425 - labelWidth: 150  
426 - },  
427 - id: this.formatId,  
428 - hidden: true,  
429 - items: [  
430 - {  
431 - fieldLabel: 'define time format',  
432 - name: 'nonstd',  
433 - value: 'Y-m-d H:i:s',  
434 - enableKeyEvents: true,  
435 - listeners:  
436 - {  
437 - keyUp: function () {  
438 - if (this.getValue().indexOf('z') > 0) {  
439 - this.nextSibling().show();  
440 - }  
441 - if (this.getValue().indexOf('d') > 0) {  
442 - this.nextSibling().hide();  
443 - }  
444 - } 462 + sampling = {
  463 + xtype: 'radiogroup',
  464 + fieldLabel: 'Time Sampling',
  465 + labelWidth: 90,
  466 + cls: 'x-check-group-alt',
  467 + hidden: !this.isFile,
  468 + defaults: {name: 'timesmpl'},
  469 + items: [
  470 + {
  471 + boxLabel: 'constant',
  472 + inputValue: 'constant',
  473 + checked: true
  474 + },
  475 + {
  476 + boxLabel: 'variable&nbsp;<img amda_clicktip="variableSampling" style="vertical-align:bottom" ' +
  477 + 'src="js/resources/images/16x16/info_mini.png"',
  478 + inputValue: 'variable'
  479 + }
  480 + ]
  481 + };
  482 +
  483 + dayStart = {
  484 + xtype: 'checkbox',
  485 + name: 'doy',
  486 + hidden: true,
  487 + fieldLabel: 'DOY starts from 1',
  488 + inputValue: '1'
  489 + };
  490 +
  491 + nonStandardFormat = {
  492 + xtype: 'fieldcontainer',
  493 + defaultType: 'textfield',
  494 + layout: 'anchor',
  495 + defaults: {
  496 + layout: '100%',
  497 + labelWidth: 150
  498 + },
  499 + id: this.formatId,
  500 + hidden: true,
  501 + items: [
  502 + {
  503 + fieldLabel: 'define time format',
  504 + name: 'nonstd',
  505 + value: 'Y-m-d H:i:s',
  506 + enableKeyEvents: true,
  507 + listeners: {
  508 + keyUp: function () {
  509 + if (this.getValue().indexOf('z') > 0) {
  510 + this.nextSibling().show();
  511 + }
  512 + if (this.getValue().indexOf('d') > 0) {
  513 + this.nextSibling().hide();
445 } 514 }
446 - },  
447 - dayStart,  
448 - {  
449 - fieldLabel: 'define max time length',  
450 - name: 'timelength',  
451 - value: 'auto'  
452 - }],  
453 - listeners:  
454 - {  
455 - hide: function () {  
456 - this.items.getAt(1).hide();  
457 } 515 }
458 } 516 }
459 - }; 517 + },
  518 + dayStart,
  519 + {
  520 + fieldLabel: 'define max time length',
  521 + name: 'timelength',
  522 + value: 'auto'
  523 + }
  524 + ],
  525 + listeners: {
  526 + hide: function () {
  527 + this.items.getAt(1).hide();
  528 + }
  529 + }
  530 + };
460 531
461 - var timeFormat = Ext.create('Ext.form.FieldSet', { 532 + timeFormat = Ext.create('Ext.form.FieldSet', {
462 id: timeFormatId, 533 id: timeFormatId,
463 title: 'Time Settings', 534 title: 'Time Settings',
464 hidden: !this.isFile, 535 hidden: !this.isFile,
@@ -471,30 +542,34 @@ Ext.define(&#39;amdaUI.UploadPanelUI&#39;, { @@ -471,30 +542,34 @@ Ext.define(&#39;amdaUI.UploadPanelUI&#39;, {
471 defaults: {name: 'timefrmt'}, 542 defaults: {name: 'timefrmt'},
472 items: [ 543 items: [
473 { 544 {
474 - boxLabel: 'standard&nbsp;<img amda_clicktip="standardTimeFormat" style="vertical-align:bottom" src="js/resources/images/16x16/info_mini.png"', 545 + boxLabel: 'standard&nbsp;<img amda_clicktip="standardTimeFormat" style="vertical-align:bottom" ' +
  546 + 'src="js/resources/images/16x16/info_mini.png"',
475 inputValue: 'standard', 547 inputValue: 'standard',
476 checked: true 548 checked: true
477 }, 549 },
478 { 550 {
479 - boxLabel: 'no&nbsp;<img amda_clicktip="userTimeFormat" style="vertical-align:bottom" src="js/resources/images/16x16/info_mini.png"', 551 + boxLabel: 'no&nbsp;<img amda_clicktip="userTimeFormat" style="vertical-align:bottom" ' +
  552 + 'src="js/resources/images/16x16/info_mini.png"',
480 inputValue: 'user', 553 inputValue: 'user',
481 - listeners:  
482 - {  
483 - scope: this,  
484 - change: function (cb, nv, ov) {  
485 - if (nv)  
486 - Ext.getCmp(this.formatId).show();  
487 - else  
488 - Ext.getCmp(this.formatId).hide(); 554 + listeners: {
  555 + scope: this,
  556 + change: function (cb, nv) {
  557 + if (nv) {
  558 + Ext.getCmp(this.formatId).show();
  559 + } else {
  560 + Ext.getCmp(this.formatId).hide();
489 } 561 }
490 } 562 }
491 - }] 563 + }
  564 + }
  565 + ]
492 }, 566 },
493 nonStandardFormat, 567 nonStandardFormat,
494 - Sampling] 568 + sampling
  569 + ]
495 }); 570 });
496 571
497 - var localFile = Ext.create('Ext.form.Panel', { 572 + localFile = Ext.create('Ext.form.Panel', {
498 id: this.localUploadId, 573 id: this.localUploadId,
499 fileUpload: true, 574 fileUpload: true,
500 hideLabels: true, 575 hideLabels: true,
@@ -506,23 +581,24 @@ Ext.define(&#39;amdaUI.UploadPanelUI&#39;, { @@ -506,23 +581,24 @@ Ext.define(&#39;amdaUI.UploadPanelUI&#39;, {
506 width: 300, 581 width: 300,
507 name: localUploadName, 582 name: localUploadName,
508 buttonText: 'Browse', 583 buttonText: 'Browse',
509 - listeners:  
510 - {  
511 - scope: this,  
512 - change: function (field, value, e) {  
513 - this.updateFormat(value);  
514 - } 584 + listeners: {
  585 + scope: this,
  586 + change: function (field, value) {
  587 + this.updateFormat(value);
515 } 588 }
  589 + }
516 }, 590 },
517 { 591 {
518 - // it is common setting for Local and Remote files 592 + // It is common setting for Local and Remote files
519 xtype: 'hiddenfield', 593 xtype: 'hiddenfield',
520 name: 'MAX_FILE_SIZE', 594 name: 'MAX_FILE_SIZE',
521 - value: myDesktopApp.MAX_UPLOADED_FILE_SIZE // 30MB  
522 - }] 595 + // Max uploaded file size: 30MB
  596 + value: myDesktopApp.MAX_UPLOADED_FILE_SIZE
  597 + }
  598 + ]
523 }); 599 });
524 600
525 - var remoteFile = Ext.create('Ext.form.Panel', { 601 + remoteFile = Ext.create('Ext.form.Panel', {
526 id: this.remoteUploadId, 602 id: this.remoteUploadId,
527 hideLabels: true, 603 hideLabels: true,
528 autoHeight: true, 604 autoHeight: true,
@@ -535,17 +611,17 @@ Ext.define(&#39;amdaUI.UploadPanelUI&#39;, { @@ -535,17 +611,17 @@ Ext.define(&#39;amdaUI.UploadPanelUI&#39;, {
535 name: remoteUploadName, 611 name: remoteUploadName,
536 emptyText: 'Enter Remote File URL (http or ftp)', 612 emptyText: 'Enter Remote File URL (http or ftp)',
537 width: 310, 613 width: 310,
538 - listeners:  
539 - {  
540 - scope: this,  
541 - change: function (field, value, e) {  
542 - this.updateFormat(value);  
543 - } 614 + listeners: {
  615 + scope: this,
  616 + change: function (field, value) {
  617 + this.updateFormat(value);
544 } 618 }
545 - }] 619 + }
  620 + }
  621 + ]
546 }); 622 });
547 623
548 - var uploadForm = Ext.create('Ext.form.FieldSet', { 624 + uploadForm = Ext.create('Ext.form.FieldSet', {
549 title: 'File Source', 625 title: 'File Source',
550 items: [ 626 items: [
551 { 627 {
@@ -553,84 +629,95 @@ Ext.define(&#39;amdaUI.UploadPanelUI&#39;, { @@ -553,84 +629,95 @@ Ext.define(&#39;amdaUI.UploadPanelUI&#39;, {
553 cls: 'x-check-group-alt', 629 cls: 'x-check-group-alt',
554 items: [ 630 items: [
555 { 631 {
556 - boxLabel: 'Local', name: 'filesrc', inputValue: 'LOCAL', checked: true,  
557 - listeners:  
558 - {  
559 - scope: this,  
560 - change: function (cb, nv, ov) {  
561 - if (nv == ov) return;  
562 - var local = Ext.getCmp(this.localUploadId);  
563 - var remote = Ext.getCmp(this.remoteUploadId);  
564 - if (nv) {  
565 - remote.hide();  
566 - local.show();  
567 - }  
568 - else {  
569 - local.hide();  
570 - remote.show();  
571 - } 632 + boxLabel: 'Local',
  633 + name: 'filesrc',
  634 + inputValue: 'LOCAL',
  635 + checked: true,
  636 + listeners: {
  637 + scope: this,
  638 + change: function (cb, nv, ov) {
  639 + if (nv === ov) {
  640 + return;
  641 + }
  642 + local = Ext.getCmp(this.localUploadId);
  643 + remote = Ext.getCmp(this.remoteUploadId);
  644 + if (nv) {
  645 + remote.hide();
  646 + local.show();
  647 + } else {
  648 + local.hide();
  649 + remote.show();
572 } 650 }
573 } 651 }
  652 + }
574 }, 653 },
575 - {boxLabel: 'URL', name: 'filesrc', inputValue: 'URL'}]  
576 - }] 654 + {
  655 + boxLabel: 'URL',
  656 + name: 'filesrc',
  657 + inputValue: 'URL'
  658 + }
  659 + ]
  660 + }
  661 + ]
577 }); 662 });
578 663
579 - var myConf =  
580 - {  
581 - title: title,  
582 - layout: {type: 'vbox', align: 'stretch'},  
583 - bodyStyle: {background: '#dfe8f6'},  
584 - items: [  
585 - uploadForm,  
586 - localFile,  
587 - remoteFile,  
588 - fileFormat,  
589 - timeFormat,  
590 - {  
591 - xtype: 'hidden',  
592 - name: 'sampData',  
593 - value: null 664 + myConf = {
  665 + title: title,
  666 + layout: {
  667 + type: 'vbox',
  668 + align: 'stretch'
  669 + },
  670 + bodyStyle: {background: '#dfe8f6'},
  671 + items: [
  672 + uploadForm,
  673 + localFile,
  674 + remoteFile,
  675 + fileFormat,
  676 + timeFormat,
  677 + {
  678 + xtype: 'hidden',
  679 + name: 'sampData',
  680 + value: null
  681 + },
  682 + {
  683 + xtype: 'hidden',
  684 + name: 'sampFileName',
  685 + value: null
  686 + }
  687 + ],
  688 + buttons: [
  689 + {
  690 + text: 'Upload',
  691 + handler: function () {
  692 + this.postUpload();
594 }, 693 },
595 - {  
596 - xtype: 'hidden',  
597 - name: 'sampFileName',  
598 - value: null, 694 + scope: this
  695 + },
  696 + {
  697 + text: 'Reset',
  698 + handler: function () {
  699 + this.up('form').getForm().reset();
599 } 700 }
600 - ],  
601 - buttons: [  
602 - {  
603 - text: 'Upload',  
604 - handler: function () {  
605 - this.postUpload();  
606 - },  
607 - scope: this  
608 - },  
609 - {  
610 - text: 'Reset',  
611 - handler: function () {  
612 - this.up('form').getForm().reset();  
613 - }  
614 - }],  
615 - plugins: [{ptype: 'remoteSearchPlugin'}],  
616 - listeners:  
617 - {  
618 - click:  
619 - {  
620 - element: 'el',  
621 - fn: function (e, t) {  
622 - var me = t,  
623 - text = me.getAttribute('amda_clicktip');  
624 - if (text) {  
625 - e.preventDefault();  
626 - AmdaAction.getInfo({name: text}, function (res, e) {  
627 - if (res.success) myDesktopApp.infoMsg(res.result);  
628 - });  
629 - } 701 + }
  702 + ],
  703 + plugins: [{ptype: 'remoteSearchPlugin'}],
  704 + listeners: {
  705 + click: {
  706 + element: 'el',
  707 + fn: function (e, t) {
  708 + var text = t.getAttribute('amda_clicktip');
  709 + if (text) {
  710 + e.preventDefault();
  711 + AmdaAction.getInfo({name: text}, function (res) {
  712 + if (res.success) {
  713 + myDesktopApp.infoMsg(res.result);
630 } 714 }
631 - } 715 + });
  716 + }
632 } 717 }
633 - }; 718 + }
  719 + }
  720 + };
634 721
635 Ext.apply(this, Ext.apply(arguments, myConf)); 722 Ext.apply(this, Ext.apply(arguments, myConf));
636 } 723 }