Commit b530f31f2fad4eef19db75482aafe531f41db96f

Authored by Elena.Budnik
1 parent 7d539a8c

remote sites from json

generic_data/remote_sites.json 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +{"remote_sites": [
  2 + {"name": "CDAWeb", "value": "https://cdaweb.gsfc.nasa.gov/pub/data/"}
  3 +]}
js/app/views/RemoteSearchPlugin.js
1 /** 1 /**
2 * Project  : AMDA-NG 2 * Project  : AMDA-NG
3 * Name : RemoteSearchPlug.js 3 * Name : RemoteSearchPlug.js
4 - * @plugin amdaUI.InteractiveIntervalPlug  
5 - * @extends Ext.AbstractPlugin  
6 - * @ptype interactiveIntervalPlugin  
7 - * @brief Plot interactive session UI (View)  
8 - * @author Myriam  
9 - * @version $Id: RemoteSearchPlugin.js 1130 2012-12-18 16:45:54Z elena $  
10 - ********************************************************************************  
11 - * FT Id : Date : Name - Description  
12 - *******************************************************************************  
13 - * : 4 + * @plugin remoteSearchPlugin
  5 + * @extends Ext.AbstractPlugin
14 */ 6 */
15 7
16 8
@@ -22,93 +14,85 @@ Ext.define('amdaUI.RemoteSearchPlugin', { @@ -22,93 +14,85 @@ Ext.define('amdaUI.RemoteSearchPlugin', {
22 14
23 win : null, 15 win : null,
24 16
25 - constructor: function(config) {  
26 - Ext.apply(this, config);  
27 - this.callParent(arguments); 17 + constructor: function(config) {
  18 + Ext.apply(this, config);
  19 + this.callParent(arguments);
28 }, 20 },
29 21
30 22
31 init: function(cmp) { 23 init: function(cmp) {
32 - this.hostCmp = cmp;  
33 - this.hostCmp.on({  
34 - open: this.onOpen,  
35 - scope: this}); 24 + this.hostCmp = cmp;
  25 + this.hostCmp.on({
  26 + open: this.onOpen,
  27 + scope: this});
36 }, 28 },
37 - 29 +
38 onDestroy : function() { 30 onDestroy : function() {
39 - this.win = null; 31 + this.win = null;
40 }, 32 },
41 33
42 onOpen: function(url) { 34 onOpen: function(url) {
43 - //TODO just reloa dtree  
44 - if (this.win) this.win.destroy(); 35 + //TODO just reload tree
  36 + if (this.win) this.win.destroy();
45 37
46 if (!this.win) { 38 if (!this.win) {
47 - this.win = new Ext.Window({  
48 - id: 'remoteSearch-win',  
49 - width: 310,  
50 - height: 500,  
51 - title: url,  
52 - layout: 'fit',  
53 - constrain: true,  
54 - ghost: false,  
55 - items: this.getTree(url),  
56 - listeners: {  
57 - scope: this,  
58 - beforeclose: function(){  
59 - // Ext.PluginManager.unregister(this);  
60 - }  
61 - },  
62 - getConstrainVector: function(constrainTo){ 39 + this.win = new Ext.Window({
  40 + id: 'remoteSearch-win',
  41 + width: 310,
  42 + height: 500,
  43 + title: url,
  44 + layout: 'fit',
  45 + constrain: true,
  46 + ghost: false,
  47 + items: this.getTree(url),
  48 + getConstrainVector: function(constrainTo){
63 var me = this; 49 var me = this;
64 - if (me.constrain || me.constrainHeader) {  
65 - constrainTo = constrainTo || (me.floatParent && me.floatParent.getTargetEl()) || me.container || me.el.getScopeParent();  
66 - return (me.constrainHeader ? me.header.el : me.el).getConstrainVector(constrainTo);  
67 - }  
68 - }  
69 - });  
70 - this.win.on('destroy', this.onDestroy, this);  
71 -  
72 - // Ext.PluginManager.register(this);  
73 -  
74 - this.win.show();  
75 - } 50 + if (me.constrain || me.constrainHeader) {
  51 + constrainTo = constrainTo || (me.floatParent && me.floatParent.getTargetEl()) || me.container || me.el.getScopeParent();
  52 + return (me.constrainHeader ? me.header.el : me.el).getConstrainVector(constrainTo);
  53 + }
  54 + }
  55 + });
  56 + this.win.on('destroy', this.onDestroy, this);
  57 +
  58 + this.win.show();
  59 + }
76 }, 60 },
77 61
78 - getTree : function(url) {  
79 -  
80 - var store = Ext.create('Ext.data.TreeStore', {  
81 - model: 'amdaModel.AmdaNode',  
82 - root: {  
83 - text: url,  
84 - nodeType : 'url',  
85 - expanded: true  
86 - } ,  
87 - listeners: {  
88 - scope : this,  
89 - beforeload: function(store, operation){  
90 - store.proxy.extraParams = {  
91 - nodeType: 'url',  
92 - baseId: url  
93 - }}  
94 - } 62 + getTree : function(url)
  63 + {
  64 + var store = Ext.create('Ext.data.TreeStore', {
  65 + model: 'amdaModel.AmdaNode',
  66 + root: {
  67 + text: url,
  68 + nodeType : 'url',
  69 + expanded: true
  70 + } ,
  71 + listeners: {
  72 + scope : this,
  73 + beforeload: function(store, operation){
  74 + store.proxy.extraParams = {
  75 + nodeType: 'url',
  76 + baseId: url
  77 + }
  78 + }
  79 + }
  80 + });
95 81
96 - });  
97 -  
98 - var tree = Ext.create('Ext.tree.Panel', {  
99 - store: store,  
100 - listeners : {  
101 - scope : this,  
102 - itemdblclick: function(view, record, item, index, event){  
103 - event.stopEvent();  
104 - var form = this.hostCmp.down('form').next().getForm();  
105 - form.getFields().getAt(1).setValue(record.internalId); // internalId ??  
106 - this.win.destroy();  
107 - }  
108 - }  
109 - }); 82 + var tree = Ext.create('Ext.tree.Panel', {
  83 + store: store,
  84 + listeners : {
  85 + scope : this,
  86 + itemdblclick: function(view, record, item, index, event){
  87 + event.stopEvent();
  88 + var form = this.hostCmp.down('form').next().getForm();
  89 + form.getFields().getAt(1).setValue(record.internalId); // internalId ??
  90 + this.win.destroy();
  91 + }
  92 + }
  93 + });
110 94
111 - return tree; 95 + return tree;
112 } 96 }
113 97
114 }); 98 });
115 \ No newline at end of file 99 \ No newline at end of file
js/app/views/UploadPanelUI.js
@@ -261,13 +261,18 @@ Ext.define('amdaUI.UploadPanelUI', { @@ -261,13 +261,18 @@ Ext.define('amdaUI.UploadPanelUI', {
261 261
262 this.localUploadId = 'form-uploadfile'; 262 this.localUploadId = 'form-uploadfile';
263 this.remoteUploadId = 'form-uploadurl'; 263 this.remoteUploadId = 'form-uploadurl';
264 - this.nodeType = 'amdaModel.MyDataParamNode';  
265 - //TODO load XML 264 + this.nodeType = 'amdaModel.MyDataParamNode';
266 this.store = Ext.create('Ext.data.Store', { 265 this.store = Ext.create('Ext.data.Store', {
267 fields: ['value', 'name'], 266 fields: ['value', 'name'],
268 - data : [  
269 - {"value":"ftp://cdaweb.gsfc.nasa.gov/pub/data/", "name":"CDAWEB/FTP"}/*,  
270 - {"value":"ftp://ftp.ngdc.noaa.gov/STP/SOLAR_DATA/", "name":"Solar Data"}*/] 267 + proxy: {
  268 + type: 'ajax',
  269 + url : 'generic_data/remote_sites.json',
  270 + reader: {
  271 + type: 'json',
  272 + root: 'remote_sites'
  273 + }
  274 + },
  275 + autoLoad: true
271 }); 276 });
272 277
273 this.radioId = 'filefrmt'; 278 this.radioId = 'filefrmt';
@@ -434,11 +439,20 @@ Ext.define('amdaUI.UploadPanelUI', { @@ -434,11 +439,20 @@ Ext.define('amdaUI.UploadPanelUI', {
434 this.localUploadId = 'form-uploadtt'; 439 this.localUploadId = 'form-uploadtt';
435 this.remoteUploadId = 'form-uploadtturl'; 440 this.remoteUploadId = 'form-uploadtturl';
436 this.nodeType = 'amdaModel.TimeTableNode'; 441 this.nodeType = 'amdaModel.TimeTableNode';
437 - //TODO load XML 442 +
438 this.store = Ext.create('Ext.data.Store', { 443 this.store = Ext.create('Ext.data.Store', {
439 - fields: ['value', 'name'],  
440 - data : [] 444 + fields: ['value', 'name']/*,
  445 + proxy: {
  446 + type: 'ajax',
  447 + url : 'generic_data/remote_sites.json',
  448 + reader: {
  449 + type: 'json',
  450 + root: 'remote_sites'
  451 + }
  452 + },
  453 + autoLoad: true*/
441 }); 454 });
  455 +
442 this.radioId = 'ttfrmt'; 456 this.radioId = 'ttfrmt';
443 } 457 }
444 else { 458 else {
@@ -448,11 +462,18 @@ Ext.define('amdaUI.UploadPanelUI', { @@ -448,11 +462,18 @@ Ext.define('amdaUI.UploadPanelUI', {
448 this.localUploadId = 'form-uploadcat'; 462 this.localUploadId = 'form-uploadcat';
449 this.remoteUploadId = 'form-uploadcaturl'; 463 this.remoteUploadId = 'form-uploadcaturl';
450 this.nodeType = 'amdaModel.CatalogNode'; 464 this.nodeType = 'amdaModel.CatalogNode';
451 - //TODO load XML  
452 this.store = Ext.create('Ext.data.Store', { 465 this.store = Ext.create('Ext.data.Store', {
453 - fields: ['value', 'name'],  
454 - data : []  
455 - }); 466 + fields: ['value', 'name']/*,
  467 + proxy: {
  468 + type: 'ajax',
  469 + url : 'generic_data/remote_sites.json',
  470 + reader: {
  471 + type: 'json',
  472 + root: 'remote_sites'
  473 + }
  474 + },
  475 + autoLoad: true*/
  476 + });
456 477
457 this.radioId = 'catfrmt'; 478 this.radioId = 'catfrmt';
458 } 479 }
@@ -518,7 +539,7 @@ Ext.define('amdaUI.UploadPanelUI', { @@ -518,7 +539,7 @@ Ext.define('amdaUI.UploadPanelUI', {
518 var combo = Ext.create('Ext.form.ComboBox', { 539 var combo = Ext.create('Ext.form.ComboBox', {
519 flex : 4, 540 flex : 4,
520 store: this.store, 541 store: this.store,
521 - emptyText: 'Enter Remote Site URL (ftp)', 542 + emptyText: 'Enter Remote Site URL (ftp/http[s])',
522 queryMode: 'local', 543 queryMode: 'local',
523 displayField: 'name', 544 displayField: 'name',
524 valueField: 'value' 545 valueField: 'value'
@@ -556,7 +577,7 @@ Ext.define('amdaUI.UploadPanelUI', { @@ -556,7 +577,7 @@ Ext.define('amdaUI.UploadPanelUI', {
556 { 577 {
557 xtype : 'textfield', 578 xtype : 'textfield',
558 name : config.remoteUploadName, 579 name : config.remoteUploadName,
559 - emptyText: 'Enter Remote File URL (http or ftp)', 580 + emptyText: 'Enter Remote File URL (ftp/http[s])',
560 width: 310, 581 width: 310,
561 listeners: 582 listeners:
562 { 583 {
php/old_amda/simple_html_dom.php renamed to php/classes/simple_html_dom.php
php/src/cdfsamplingsfromdata.c 0 → 100644
@@ -0,0 +1,192 @@ @@ -0,0 +1,192 @@
  1 +/* $Id: timeResFromData.c,v 1.1 2010/08/31 10:32:55 budnik Exp $ */
  2 +
  3 +/** @file timeResFromData.c
  4 +* @brief Function to get CDAWEB dataset sampling times from data files
  5 +*/
  6 +#include <stdio.h>
  7 +#include <stdlib.h>
  8 +#include <cdf.h>
  9 +#include <string.h>
  10 +#include <time.h>
  11 +#include <math.h>
  12 +
  13 +#define fileName "temp.cdf"
  14 +#define badFile -100
  15 +
  16 +/*************************************
  17 + Global variables and structures
  18 +**************************************/
  19 +long CDFDims, // Number of dimensions in a CDF file
  20 + CDFVars, // Number of variables in a CDF file
  21 + CDFDimSizes[CDF_MAX_DIMS], // Dimension Sizes in a CDF file
  22 + CDFencoding, // Data encoding
  23 + CDFmajority, // Variable majority
  24 + CDFmaxRec, // max Record number
  25 + CDFAttrs; // number of CDF Attributes
  26 +// CDFdatatype;
  27 +
  28 +struct cdfvar { // CDF variable structure
  29 + char name[CDF_VAR_NAME_LEN+1];
  30 + long num; //variable number
  31 + long datatype;
  32 + long numElem; // variable dimensionality
  33 + long recVariance; // variable rec Variance
  34 + long dimVariances[CDF_MAX_DIMS]; // # of data values in dimSizes
  35 +} cdfVar;
  36 +
  37 +/*--------------------------------------------------------------------------
  38 + * Handles a CDF error.
  39 + *--------------------------------------------------------------------------*/
  40 +void cdf_handle_error(CDFstatus status)
  41 +{
  42 + char message[CDF_STATUSTEXT_LEN+1];
  43 +
  44 + CDFerror (status, message); /* Get the appropriate message */
  45 + fprintf (stderr, "%s\n", message);
  46 + exit(1);
  47 +}
  48 +
  49 +void find_min(int* delta, int nRecs, int minFalse, int* minVal)
  50 +{
  51 + int i, n, min;
  52 +
  53 + n = 1;
  54 + i = 0;
  55 + while (abs(delta[i]) <= minFalse) i++;
  56 + if (i < nRecs) {
  57 + min = abs(delta[i]);
  58 + // printf(" first MIN %d \n", min);
  59 + for (i = 1; i < nRecs; i++) {
  60 + // printf(" delta %d \n", delta[i]);
  61 + if (delta[i] == min) n++;
  62 + if (delta[i] < min && delta[i] > minFalse) {
  63 + min = delta[i];
  64 + n = 1;
  65 + }
  66 + }
  67 + } else {
  68 + min = -10;
  69 + n = nRecs;
  70 + }
  71 +
  72 + minVal[0] = min;
  73 + minVal[1] = n;
  74 + printf(" MIN %d %d\n", min, n);
  75 +}
  76 +
  77 +int main(int argc, char *argv[])
  78 +{
  79 + long RecStart = 0, RecCount, RecInt = 1;
  80 + long indices[1] = {0}, intervals[1] = {1}, counts[1] = {1};
  81 + long varN = -1;
  82 + long datatype = 0, attrN, maxEntry;
  83 + CDFstatus cstatus; // CDF status code
  84 + CDFid id;
  85 + double *value;
  86 + int *delta;
  87 + int i, minFalse = 0, numEnough;
  88 + int min[2] = {0, 0};
  89 + char attrValue[300];
  90 + float Sampling;
  91 + double epoch16[2], dbl_value, dbl_value_;
  92 + long year, month, day, hour, minute, sec, msec, mksec, nsec, psec;
  93 + long long *int_value;
  94 +
  95 +/*********************** Open CDF file *****************************/
  96 + if ((cstatus = CDFopen(fileName, &id)) != CDF_OK)
  97 + cdf_handle_error(cstatus);
  98 +
  99 +/*********** treat all vars as zVars with eliminated false dimensionality and get Nrecs **********/
  100 +
  101 + if ((cstatus = CDFlib(SELECT_, CDF_zMODE_, zMODEon2, NULL_)) != CDF_OK)
  102 + cdf_handle_error (cstatus);
  103 +
  104 + while (datatype != CDF_EPOCH && datatype != CDF_EPOCH16 && datatype != CDF_TIME_TT2000){
  105 + varN++;
  106 + if ((cstatus = CDFlib(SELECT_, zVAR_, varN,
  107 + GET_, zVAR_DATATYPE_, &datatype, NULL_)) != CDF_OK)
  108 + cdf_handle_error (cstatus);
  109 + // if (datatype == CDF_EPOCH16) break;
  110 + }
  111 + fprintf(stdout,"DATATYPE %d %d\n", varN, datatype);
  112 + if ((cstatus = CDFlib(SELECT_, zVAR_, varN,
  113 + GET_, zVAR_MAXREC_, &CDFmaxRec, NULL_)) != CDF_OK)
  114 + cdf_handle_error (cstatus);
  115 +
  116 + fprintf(stdout,"Max Recs %d\n", CDFmaxRec+1);
  117 + if (CDFmaxRec < 10) {
  118 + fprintf(stdout," %d\n", badFile);
  119 + exit (0);
  120 + }
  121 +
  122 + if ( datatype == CDF_TIME_TT2000 ) {
  123 + int_value = (long long *) malloc (sizeof(long long) * (CDFmaxRec+1));
  124 + /******************* Get Epoch *************************/
  125 + if ((cstatus = CDFlib (SELECT_,
  126 + zVAR_, varN,
  127 + zVAR_RECNUMBER_, RecStart,
  128 + zVAR_RECCOUNT_, CDFmaxRec+1,
  129 + zVAR_RECINTERVAL_, RecInt,
  130 + zVAR_DIMINDICES_, indices,
  131 + zVAR_DIMCOUNTS_, counts,
  132 + zVAR_DIMINTERVALS_, intervals,
  133 + GET_, zVAR_HYPERDATA_, int_value, NULL_)) != CDF_OK)
  134 + cdf_handle_error (cstatus);
  135 + }
  136 + else {
  137 + value = (double *)malloc(sizeof(double)* (CDFmaxRec+1)*((datatype == CDF_EPOCH16)+1));
  138 + /******************* Get Epoch *************************/
  139 + if ((cstatus = CDFlib (SELECT_,
  140 + zVAR_, varN,
  141 + zVAR_RECNUMBER_, RecStart,
  142 + zVAR_RECCOUNT_, CDFmaxRec+1,
  143 + zVAR_RECINTERVAL_, RecInt,
  144 + zVAR_DIMINDICES_, indices,
  145 + zVAR_DIMCOUNTS_, counts,
  146 + zVAR_DIMINTERVALS_, intervals,
  147 + GET_, zVAR_HYPERDATA_, value, NULL_)) != CDF_OK)
  148 + cdf_handle_error (cstatus);
  149 + }
  150 +
  151 +
  152 +
  153 + delta = (int *)malloc(sizeof(int)* CDFmaxRec);
  154 + for (i = 1; i < CDFmaxRec+1; i++)
  155 + {
  156 + if (datatype == CDF_TIME_TT2000) {
  157 + dbl_value_ = CDF_TT2000_to_UTC_EPOCH(int_value[i-1]);
  158 + dbl_value = CDF_TT2000_to_UTC_EPOCH(int_value[i]);
  159 + delta[i-1] = (int)(dbl_value - dbl_value_ + 50)/100;
  160 + }
  161 + else {
  162 + if (datatype == CDF_EPOCH16) {
  163 + epoch16[0] = value[2*(i-1)];
  164 + epoch16[1] = value[2*(i-1)+1];
  165 + EPOCH16breakdown(epoch16, &year, &month, &day, &hour, &minute, &sec, &msec, &mksec, &nsec, &psec);
  166 + value[i-1] = computeEPOCH(year, month, day, hour, minute, sec, msec);
  167 + epoch16[0] = value[2*i];
  168 + epoch16[1] = value[2*i+1];
  169 + EPOCH16breakdown(epoch16, &year, &month, &day, &hour, &minute, &sec, &msec, &mksec, &nsec, &psec);
  170 + value[i] = computeEPOCH(year, month, day, hour, minute, sec, msec);
  171 + }
  172 + delta[i-1] = (int)(value[i] - value[i-1] + 50)/100;
  173 + }
  174 + }
  175 + // fprintf(stdout,"value %f\n", value[11]-value[10]);
  176 + if (datatype == CDF_TIME_TT2000) free(int_value);
  177 + else free(value);
  178 + // fprintf(stdout,"delta %d\n", delta[0]);
  179 + numEnough = CDFmaxRec/10;
  180 + while (min[1] < numEnough) {
  181 + fprintf(stdout,"minFalse %d\n", minFalse);
  182 + find_min(delta, CDFmaxRec, minFalse, min);
  183 + minFalse = min[0];
  184 + }
  185 +
  186 + free(delta);
  187 + if ((cstatus = CDFlib(CLOSE_, CDF_, NULL_)) != CDF_OK)
  188 + cdf_handle_error (cstatus);
  189 +
  190 + // fprintf(stdout,"%d %f\n",min[1], (float)min[0]/100.0);
  191 + fprintf(stdout,"%f\n",(float)min[0]/10.0);
  192 +}