Compare View
Commits (14)
Showing
17 changed files
Show diff stats
desktop.php
... | ... | @@ -41,7 +41,7 @@ if ($sessionID === FALSE) { |
41 | 41 | <!-- Important ! the order of css loading : ext-all.css - should be the first --> |
42 | 42 | <link rel="stylesheet" type="text/css" href="js/lib/ext/resources/css/ext-all.css" /> |
43 | 43 | <link rel="stylesheet" type="text/css" href="js/resources/css/desktop.css" /> |
44 | - <link rel="stylesheet" type="text/css" href="js/resources/css/amda.css?v=2" /> | |
44 | + <link rel="stylesheet" type="text/css" href="js/resources/css/amda.css?v=4" /> | |
45 | 45 | |
46 | 46 | <link rel="stylesheet" href="js/lib/codemirror/codemirror-5.65.12/lib/codemirror.css"> |
47 | 47 | <link rel="stylesheet" href="js/lib/codemirror/codemirror-5.65.12/addon/lint/lint.css"> | ... | ... |
generic_data/defaultValues.json
... | ... | @@ -95,6 +95,11 @@ |
95 | 95 | "size":4, |
96 | 96 | "color":"#00FF00" |
97 | 97 | }, |
98 | + "lastsymbols":{ | |
99 | + "type":"triangle", | |
100 | + "size":4, | |
101 | + "color":"#0000FF" | |
102 | + }, | |
98 | 103 | "font":{ |
99 | 104 | "name":"sans-serif", |
100 | 105 | "size":8 |
... | ... | @@ -108,6 +113,11 @@ |
108 | 113 | "size":10, |
109 | 114 | "color":"#FF0000" |
110 | 115 | }, |
116 | + "lastsymbols":{ | |
117 | + "type":"triangle", | |
118 | + "size":4, | |
119 | + "color":"#0000FF" | |
120 | + }, | |
111 | 121 | "font":{ |
112 | 122 | "name":"sans-serif", |
113 | 123 | "size":8 | ... | ... |
generic_data/defaultValuesLinks.json
... | ... | @@ -151,6 +151,16 @@ |
151 | 151 | "type":"colorpicker", |
152 | 152 | "store":null |
153 | 153 | }, |
154 | + "plot.serie.timetick.lastsymbols.type": | |
155 | + { | |
156 | + "type":"combobox", | |
157 | + "store":"availableSymbolsTypes" | |
158 | + }, | |
159 | + "plot.serie.timetick.lastsymbols.color": | |
160 | + { | |
161 | + "type":"colorpicker", | |
162 | + "store":null | |
163 | + }, | |
154 | 164 | "plot.serie.timetick.font.name": |
155 | 165 | { |
156 | 166 | "type":"combobox", |
... | ... | @@ -171,6 +181,16 @@ |
171 | 181 | "type":"colorpicker", |
172 | 182 | "store":null |
173 | 183 | }, |
184 | + "plot.serie.intervaltick.lastsymbols.type": | |
185 | + { | |
186 | + "type":"combobox", | |
187 | + "store":"availableSymbolsTypes" | |
188 | + }, | |
189 | + "plot.serie.intervaltick.lastsymbols.color": | |
190 | + { | |
191 | + "type":"colorpicker", | |
192 | + "store":null | |
193 | + }, | |
174 | 194 | "plot.serie.intervaltick.font.name": |
175 | 195 | { |
176 | 196 | "type":"combobox", | ... | ... |
... | ... | @@ -0,0 +1,20 @@ |
1 | +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | |
2 | +<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><title> </title> | |
3 | +<link href="../js/resources/css/styles.css" rel="stylesheet" type="text/css" media="screen" /> | |
4 | +<link rel="icon" href="../favicon.ico" type="image/x-icon"> | |
5 | +<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"> | |
6 | +</head> | |
7 | + <body> | |
8 | +<div id="content"> | |
9 | +<div id="main"> | |
10 | +<h3> | |
11 | + Mercury Plasma Particle Experiment (MPPE) | |
12 | +</h3> | |
13 | +</br> | |
14 | + | |
15 | +MPPE is funded by JAXA, CNES, the Center National de la Recherche scientifique (CNRS, France), the Italian Space Agency (ASI). | |
16 | +</br> | |
17 | +Using these data for publications should imply co-authorship of Y. Saito (MPPE PI) and/or Y. Saito (MIA) and/or D. Delcourt (MSA) and/or N. André (MEA) and/or S. Barabash (ENA) depending on the MPPE sensor(s) used in the study. Preferred collaboration is participation to analysis well ahead of publication. | |
18 | + | |
19 | +</div></div> | |
20 | +</body></html> | |
0 | 21 | \ No newline at end of file | ... | ... |
help/policy.html
... | ... | @@ -31,6 +31,7 @@ |
31 | 31 | <li><a href="https://www.cosmos.esa.int/web/solar-orbiter/solar-orbiter-publication-acknowledgement" target="_blank">SOLAR ORBITER</a> |
32 | 32 | <li><a href="STEREO.html" target="_blank">STEREO</a> |
33 | 33 | <li><a href="http://themis.ssl.berkeley.edu/roadrules.shtml" target="_blank">THEMIS</a> |
34 | + <li><a href="MPPE.html" target="_blank">BepiColombo/Mio/MPPE</a> | |
34 | 35 | </ul> |
35 | 36 | </div> |
36 | 37 | </div> | ... | ... |
js/app/models/PlotObjects/PlotBaseSerieObject.js
... | ... | @@ -23,7 +23,7 @@ Ext.define('amdaPlotObj.PlotBaseSerieObject', { |
23 | 23 | {name: 'serie-lines-style', type: 'string'}, |
24 | 24 | {name: 'serie-lines-width', type: 'float'}, |
25 | 25 | {name: 'serie-lines-color', type: 'string'}, |
26 | - {name: 'serie-symbols-activated', type: 'boolean'}, | |
26 | + {name: 'serie-symbols-activated', type: 'boolean'}, | |
27 | 27 | {name: 'serie-symbols-type', type: 'string'}, |
28 | 28 | {name: 'serie-symbols-size', type: 'float'}, |
29 | 29 | {name: 'serie-symbols-color', type: 'string'}, |
... | ... | @@ -45,6 +45,10 @@ Ext.define('amdaPlotObj.PlotBaseSerieObject', { |
45 | 45 | {name: 'serie-timetick-firstsymbols-type', type: 'string'}, |
46 | 46 | {name: 'serie-timetick-firstsymbols-size', type: 'float'}, |
47 | 47 | {name: 'serie-timetick-firstsymbols-color', type: 'string'}, |
48 | + {name: 'serie-timetick-lastsymbols-activated', type: 'boolean'}, | |
49 | + {name: 'serie-timetick-lastsymbols-type', type: 'string'}, | |
50 | + {name: 'serie-timetick-lastsymbols-size', type: 'float'}, | |
51 | + {name: 'serie-timetick-lastsymbols-color', type: 'string'}, | |
48 | 52 | {name: 'serie-timetick-font-activated', type: 'boolean'}, |
49 | 53 | {name: 'serie-timetick-font-name', type: 'string'}, |
50 | 54 | {name: 'serie-timetick-font-size', type: 'int'}, |
... | ... | @@ -58,6 +62,10 @@ Ext.define('amdaPlotObj.PlotBaseSerieObject', { |
58 | 62 | {name: 'serie-intervaltick-symbols-type', type: 'string'}, |
59 | 63 | {name: 'serie-intervaltick-symbols-size', type: 'float'}, |
60 | 64 | {name: 'serie-intervaltick-symbols-color', type: 'string'}, |
65 | + {name: 'serie-intervaltick-lastsymbols-activated', type: 'boolean'}, | |
66 | + {name: 'serie-intervaltick-lastsymbols-type', type: 'string'}, | |
67 | + {name: 'serie-intervaltick-lastsymbols-size', type: 'float'}, | |
68 | + {name: 'serie-intervaltick-lastsymbols-color', type: 'string'}, | |
61 | 69 | {name: 'serie-intervaltick-font-activated', type: 'boolean'}, |
62 | 70 | {name: 'serie-intervaltick-font-name', type: 'string'}, |
63 | 71 | {name: 'serie-intervaltick-font-size', type: 'int'}, |
... | ... | @@ -110,6 +118,10 @@ Ext.define('amdaPlotObj.PlotBaseSerieObject', { |
110 | 118 | this.set('serie-timetick-firstsymbols-type', amdaDefaultValues.plot.serie.timetick.firstsymbols.type); |
111 | 119 | this.set('serie-timetick-firstsymbols-size', amdaDefaultValues.plot.serie.timetick.firstsymbols.size); |
112 | 120 | this.set('serie-timetick-firstsymbols-color', amdaDefaultValues.plot.serie.timetick.firstsymbols.color); |
121 | + this.set('serie-timetick-lastsymbols-activated', false); | |
122 | + this.set('serie-timetick-lastsymbols-type', amdaDefaultValues.plot.serie.timetick.lastsymbols.type); | |
123 | + this.set('serie-timetick-lastsymbols-size', amdaDefaultValues.plot.serie.timetick.lastsymbols.size); | |
124 | + this.set('serie-timetick-lastsymbols-color', amdaDefaultValues.plot.serie.timetick.lastsymbols.color); | |
113 | 125 | this.set('serie-timetick-font-activated', false); |
114 | 126 | this.set('serie-timetick-font-name', amdaDefaultValues.plot.serie.timetick.font.name); |
115 | 127 | this.set('serie-timetick-font-size', amdaDefaultValues.plot.serie.timetick.font.size); |
... | ... | @@ -122,6 +134,10 @@ Ext.define('amdaPlotObj.PlotBaseSerieObject', { |
122 | 134 | this.set('serie-intervaltick-symbols-type', amdaDefaultValues.plot.serie.intervaltick.symbols.type); |
123 | 135 | this.set('serie-intervaltick-symbols-size', amdaDefaultValues.plot.serie.intervaltick.symbols.size); |
124 | 136 | this.set('serie-intervaltick-symbols-color', amdaDefaultValues.plot.serie.intervaltick.symbols.color); |
137 | + this.set('serie-intervaltick-lastsymbols-activated', false); | |
138 | + this.set('serie-intervaltick-lastsymbols-type', amdaDefaultValues.plot.serie.intervaltick.lastsymbols.type); | |
139 | + this.set('serie-intervaltick-lastsymbols-size', amdaDefaultValues.plot.serie.intervaltick.lastsymbols.size); | |
140 | + this.set('serie-intervaltick-lastsymbols-color', amdaDefaultValues.plot.serie.intervaltick.lastsymbols.color); | |
125 | 141 | this.set('serie-intervaltick-font-activated', false); |
126 | 142 | this.set('serie-intervaltick-font-name', amdaDefaultValues.plot.serie.intervaltick.font.name); |
127 | 143 | this.set('serie-intervaltick-font-size', amdaDefaultValues.plot.serie.intervaltick.font.size); |
... | ... | @@ -175,6 +191,10 @@ Ext.define('amdaPlotObj.PlotBaseSerieObject', { |
175 | 191 | serieValues['serie-timetick-firstsymbols-type'] = this.get('serie-timetick-firstsymbols-type'); |
176 | 192 | serieValues['serie-timetick-firstsymbols-size'] = this.get('serie-timetick-firstsymbols-size'); |
177 | 193 | serieValues['serie-timetick-firstsymbols-color'] = this.get('serie-timetick-firstsymbols-color'); |
194 | + serieValues['serie-timetick-lastsymbols-activated'] = this.get('serie-timetick-lastsymbols-activated'); | |
195 | + serieValues['serie-timetick-lastsymbols-type'] = this.get('serie-timetick-lastsymbols-type'); | |
196 | + serieValues['serie-timetick-lastsymbols-size'] = this.get('serie-timetick-lastsymbols-size'); | |
197 | + serieValues['serie-timetick-lastsymbols-color'] = this.get('serie-timetick-lastsymbols-color'); | |
178 | 198 | serieValues['serie-timetick-font-activated'] = this.get('serie-timetick-font-activated'); |
179 | 199 | serieValues['serie-timetick-font-name'] = this.get('serie-timetick-font-name'); |
180 | 200 | serieValues['serie-timetick-font-size'] = this.get('serie-timetick-font-size'); |
... | ... | @@ -187,6 +207,10 @@ Ext.define('amdaPlotObj.PlotBaseSerieObject', { |
187 | 207 | serieValues['serie-intervaltick-symbols-type'] = this.get('serie-intervaltick-symbols-type'); |
188 | 208 | serieValues['serie-intervaltick-symbols-size'] = this.get('serie-intervaltick-symbols-size'); |
189 | 209 | serieValues['serie-intervaltick-symbols-color'] = this.get('serie-intervaltick-symbols-color'); |
210 | + serieValues['serie-intervaltick-lastsymbols-activated'] = this.get('serie-intervaltick-lastsymbols-activated'); | |
211 | + serieValues['serie-intervaltick-lastsymbols-type'] = this.get('serie-intervaltick-lastsymbols-type'); | |
212 | + serieValues['serie-intervaltick-lastsymbols-size'] = this.get('serie-intervaltick-lastsymbols-size'); | |
213 | + serieValues['serie-intervaltick-lastsymbols-color'] = this.get('serie-intervaltick-lastsymbols-color'); | |
190 | 214 | serieValues['serie-intervaltick-font-activated'] = this.get('serie-intervaltick-font-activated'); |
191 | 215 | serieValues['serie-intervaltick-font-name'] = this.get('serie-intervaltick-font-name'); |
192 | 216 | serieValues['serie-intervaltick-font-size'] = this.get('serie-intervaltick-font-size'); | ... | ... |
js/app/models/PlotObjects/PlotIntervalsObject.js
... | ... | @@ -26,7 +26,9 @@ Ext.define('amdaPlotObj.PlotIntervalsObject', { |
26 | 26 | { name: 'legend-text-font-name', type: 'string', defaultValue: "sans-serif" }, |
27 | 27 | { name: 'legend-text-font-size', type: 'int', defaultValue: "12" }, |
28 | 28 | { name: 'legend-text-font-bold', type: 'boolean' }, |
29 | - { name: 'legend-text-font-italic', type: 'boolean' } | |
29 | + { name: 'legend-text-font-italic', type: 'boolean' }, | |
30 | + { name: 'intervals-column-show', type: 'boolean', defaultValue: false}, | |
31 | + { name: 'intervals-param-show', type: 'string', defaultValue: ""} | |
30 | 32 | |
31 | 33 | ], |
32 | 34 | |
... | ... | @@ -64,7 +66,7 @@ Ext.define('amdaPlotObj.PlotIntervalsObject', { |
64 | 66 | { |
65 | 67 | var intervalsValues = new Object(); |
66 | 68 | intervalsValues['intervals-color'] = this.get('intervals-color'); |
67 | - intervalsValues['legend-text-activated'] = this.get('legend-text-activated'); | |
69 | + intervalsValues['legend-text-activated'] = this.get('legend-text-activated'); | |
68 | 70 | intervalsValues['legend-text-value'] = this.get('legend-text-value'); |
69 | 71 | intervalsValues['legend-text-position'] = this.get('legend-text-position'); |
70 | 72 | intervalsValues['legend-text-color'] = this.get('legend-text-color'); |
... | ... | @@ -73,6 +75,8 @@ Ext.define('amdaPlotObj.PlotIntervalsObject', { |
73 | 75 | intervalsValues['legend-text-font-size'] = this.get('legend-text-font-size'); |
74 | 76 | intervalsValues['legend-text-font-bold'] = this.get('legend-text-font-bold'); |
75 | 77 | intervalsValues['legend-text-font-italic'] = this.get('legend-text-font-italic'); |
78 | + intervalsValues['intervals-column-show'] = this.get('intervals-column-show'); | |
79 | + intervalsValues['intervals-param-show'] = this.get('intervals-param-show'); | |
76 | 80 | |
77 | 81 | return intervalsValues; |
78 | 82 | } | ... | ... |
js/app/views/AstroImagesUI.js
... | ... | @@ -80,7 +80,7 @@ Ext.define('amdaUI.AstroImagesUI', { |
80 | 80 | { |
81 | 81 | var imageSrc = this.getPreviewUrl(image); |
82 | 82 | image.set('icon',imageSrc); |
83 | - image.set('iconCls','x-tree-icon-leaf'); | |
83 | + image.set('iconCls','amda-astro-tree-icon-leaf'); | |
84 | 84 | } |
85 | 85 | else |
86 | 86 | { |
... | ... | @@ -105,8 +105,6 @@ Ext.define('amdaUI.AstroImagesUI', { |
105 | 105 | if(image.get('checked')) |
106 | 106 | { |
107 | 107 | var name = image.get('name'); |
108 | - if (!name.substr(name.lastIndexOf('.') + 1) != "fits") | |
109 | - name+='.fits'; | |
110 | 108 | imgList.push({name:name, |
111 | 109 | url:me.getImageToSendUrl(image)}); |
112 | 110 | } | ... | ... |
js/app/views/PlotComponents/PlotBaseSerieForm.js
... | ... | @@ -62,6 +62,7 @@ Ext.define('amdaPlotComp.PlotBaseSerieForm', { |
62 | 62 | this.addColorsPicker('serie-timetick-color', 'Color', amdaDefaultConfigs.availableColorsNew), |
63 | 63 | this.addStandardFieldSet('Symbols', '', this.addStandardSymbolsItems('serie-timetick-symbols')), |
64 | 64 | this.addStandardFieldSet('First symbol', 'serie-timetick-firstsymbols-activated', this.addStandardSymbolsItems('serie-timetick-firstsymbols')), |
65 | + this.addStandardFieldSet('Last symbol', 'serie-timetick-lastsymbols-activated', this.addStandardSymbolsItems('serie-timetick-lastsymbols')), | |
65 | 66 | this.addStandardFont('serie-timetick-font') |
66 | 67 | ]; |
67 | 68 | }, |
... | ... | @@ -73,6 +74,7 @@ Ext.define('amdaPlotComp.PlotBaseSerieForm', { |
73 | 74 | this.addStandardCombo('serie-intervaltick-mode', 'Mode', amdaDefaultConfigs.availableIntervalTickModes), |
74 | 75 | this.addColorsPicker('serie-intervaltick-color', 'Color', amdaDefaultConfigs.availableColorsNew), |
75 | 76 | this.addStandardFieldSet('Symbols', '', this.addStandardSymbolsItems('serie-intervaltick-symbols')), |
77 | + this.addStandardFieldSet('Last symbol', 'serie-intervaltick-lastsymbols-activated', this.addStandardSymbolsItems('serie-intervaltick-lastsymbols')), | |
76 | 78 | this.addStandardFont('serie-intervaltick-font') |
77 | 79 | ]; |
78 | 80 | }, |
... | ... | @@ -106,8 +108,8 @@ Ext.define('amdaPlotComp.PlotBaseSerieForm', { |
106 | 108 | this.addStandardFieldSet('Lines', 'serie-lines-activated', this.addStandardLineItems('serie-lines')), |
107 | 109 | this.addStandardFieldSet('Symbols', 'serie-symbols-activated', this.addStandardSymbolsItems('serie-symbols')), |
108 | 110 | this.addStandardFieldSet('Time ticks', 'serie-timetick-activated', this.getTimeTickItems()), |
109 | - this.addStandardFieldSet('Interval ticks', 'serie-intervaltick-activated', this.getIntervalTickItems()), | |
110 | - this.addStandardFieldSet('Spike Filtering ( ! Experimental ! )', 'filtering-activated', this.getFilteringItems()) | |
111 | + this.addStandardFieldSet('Interval ticks', 'serie-intervaltick-activated', this.getIntervalTickItems()), | |
112 | + this.addStandardFieldSet('Spike Filtering ( ! Experimental ! )', 'filtering-activated', this.getFilteringItems()) | |
111 | 113 | ]; |
112 | 114 | } |
113 | 115 | }); | ... | ... |
js/app/views/PlotComponents/PlotContextManager.js
... | ... | @@ -51,97 +51,55 @@ Ext.define('amdaPlotComp.PlotContextManager', { |
51 | 51 | return resPanel; |
52 | 52 | }, |
53 | 53 | |
54 | - getIntervalCoordInfo: function (context, panel, crtTimestamp) { | |
55 | - var intervalName = new Array(); | |
56 | - var intervalId = new Array(); | |
57 | - var intervalText = ""; | |
58 | - Ext.each(panel.intervals, function (interval) { | |
59 | - if (crtTimestamp > interval.startTime && crtTimestamp < interval.stopTime) { | |
60 | - intervalName.push(interval.name); | |
61 | - intervalId.push(interval.id); | |
62 | - } | |
63 | - return; | |
64 | - }); | |
65 | - if (intervalName.length > 0) { | |
66 | - intervalText = 'TT: ' + intervalName[0] + ', id: [' + intervalId[0]; | |
67 | - for (i = 1; i < intervalName.length; i++) { | |
68 | - if (intervalName[i] == intervalName[i - 1]) { | |
69 | - intervalText += ', ' + intervalId[i]; | |
70 | - } | |
71 | - else { | |
72 | - intervalText += '] | TT: ' + intervalName[i] + ', id: [' + intervalId[i]; | |
73 | - } | |
74 | - } | |
75 | - intervalText += ']' | |
76 | - } | |
77 | - return intervalText; | |
78 | - }, | |
79 | - | |
80 | - getAllIntervalParams(context, panel, crtTimestamp) { | |
81 | - var allParams = new Array(); | |
82 | - | |
83 | - Ext.each(panel.intervals, function (interval) { | |
84 | - if (crtTimestamp > interval.startTime && crtTimestamp < interval.stopTime && interval.params != "") { | |
85 | - allParams.push(interval.params); | |
86 | - } | |
87 | - return; | |
88 | - | |
89 | - }); | |
90 | - return allParams; | |
91 | - }, | |
54 | + getIntervalsOverMouse: function (context, panel, crtTimestamp) { | |
55 | + var intervalsOver = {}; | |
56 | + Ext.each(panel.parameters, function (parameter) { | |
57 | + | |
58 | + if (!parameter.ttorcat) { | |
59 | + return; | |
60 | + } | |
61 | + | |
62 | + if (!parameter.ttorcat.intervals) { | |
63 | + return; | |
64 | + } | |
92 | 65 | |
93 | - getIntervalLinks(allintervalParams) { | |
94 | - var links = new Array(); | |
95 | - Ext.each(allintervalParams, function (allParams) { | |
66 | + var columnToShow = parameter.ttorcat.hasOwnProperty('columnToShow') ? parameter.ttorcat.columnToShow : ''; | |
67 | + var columnName = ""; | |
96 | 68 | |
97 | - var params = allParams.split('|'); | |
69 | + if ((columnToShow != '') && parameter.ttorcat.columns) { | |
70 | + Ext.Object.each(parameter.ttorcat.columns, function (column_id, column_value) { | |
71 | + if (column_id == columnToShow) { | |
72 | + columnName = column_value.name; | |
73 | + } | |
74 | + }); | |
75 | + } | |
98 | 76 | |
99 | - Ext.each(params, function (param) { | |
100 | - if (param.toLowerCase().startsWith("http://") || param.toLowerCase().startsWith("https://")) { | |
101 | - links.push(param); | |
102 | - } | |
103 | - return; | |
104 | - }); | |
105 | - return; | |
106 | - }); | |
107 | - return links; | |
108 | - }, | |
77 | + Ext.Object.each(parameter.ttorcat.intervals, function (id, interval) { | |
78 | + if (crtTimestamp > interval.start && crtTimestamp < interval.stop) { | |
79 | + if (!intervalsOver.hasOwnProperty(parameter.ttorcat.name)) { | |
80 | + intervalsOver[parameter.ttorcat.name] = []; | |
81 | + } | |
82 | + var intToPush = { | |
83 | + 'id': id, | |
84 | + 'start': interval.start, | |
85 | + 'stop': interval.stop | |
86 | + }; | |
87 | + if ((columnToShow != '') && (columnName != '') && interval.hasOwnProperty('params')) { | |
88 | + Ext.Object.each(interval.params, function (param_id, param_value) { | |
89 | + if (param_id == columnToShow) { | |
90 | + intToPush['info'] = columnName + ': ' + param_value; | |
91 | + return; | |
92 | + } | |
93 | + }); | |
94 | + } | |
109 | 95 | |
110 | - setIntervalsRef(links, menu) { | |
111 | - var realLinks = new Array(); | |
112 | - for (i = 0; i < links.length; i++) { | |
113 | - var isAlreadyHere = false | |
114 | - for (j = 0; j < i; j++) { | |
115 | - if (links[i] == links[j]) { | |
116 | - isAlreadyHere = true; | |
117 | - continue; | |
118 | - } | |
119 | - } | |
120 | - if (isAlreadyHere == false) { | |
121 | - realLinks.push(links[i]); | |
122 | - } | |
123 | - } | |
96 | + intervalsOver[parameter.ttorcat.name].push(intToPush); | |
124 | 97 | |
125 | - Ext.each(realLinks, function (realLink) { | |
126 | - menu.add({ | |
127 | - text: realLink, | |
128 | - handler: function () { | |
129 | - window.open(realLink, "_blank"); | |
130 | - } | |
131 | - }); | |
98 | + } | |
99 | + }); | |
132 | 100 | }); |
133 | - return realLinks; | |
134 | - }, | |
135 | 101 | |
136 | - isInterval: function (context, panel, crtTimestamp) { | |
137 | - isInterval = false; | |
138 | - Ext.each(panel.intervals, function (interval) { | |
139 | - if (crtTimestamp > interval.startTime && crtTimestamp < interval.stopTime) { | |
140 | - isInterval = true; | |
141 | - } | |
142 | - return; | |
143 | - }); | |
144 | - return isInterval; | |
102 | + return intervalsOver; | |
145 | 103 | }, |
146 | 104 | |
147 | 105 | getInstantTimePrev :function(context) |
... | ... | @@ -201,4 +159,4 @@ Ext.define('amdaPlotComp.PlotContextManager', { |
201 | 159 | |
202 | 160 | return axisContext.min + (pixelValue - pixelMin)/(pixelMax - pixelMin)*(axisContext.max-axisContext.min); |
203 | 161 | } |
204 | -}); | |
205 | 162 | \ No newline at end of file |
163 | +}); | ... | ... |
js/app/views/PlotComponents/PlotIntervalsForm.js
... | ... | @@ -10,20 +10,56 @@ |
10 | 10 | |
11 | 11 | Ext.define('amdaPlotComp.PlotIntervalsForm', { |
12 | 12 | extend: 'amdaPlotComp.PlotStandardForm', |
13 | + | |
14 | + catalogsColumns: {}, | |
15 | + | |
16 | + paramId: '', | |
13 | 17 | |
14 | 18 | setObject : function(object) { |
15 | 19 | this.object = object.get('param-drawing-object'); |
16 | - this.loadRecord(this.object); | |
20 | + paramId = object.get('paramid'); | |
21 | + this.loadRecord(this.object); | |
22 | + this.updateColumnInfoCombo(); | |
17 | 23 | }, |
18 | - | |
24 | + | |
25 | + updateColumnInfoCombo: function(){ | |
26 | + var me = this; | |
27 | + if ((paramId.substring(0, 3) != 'cat') && (paramId.substring(0, 13) != 'sharedcatalog')) { | |
28 | + // Not available for TT | |
29 | + this.getForm().findField('intervals-column-show').setDisabled(true); | |
30 | + return; | |
31 | + } | |
32 | + | |
33 | + this.getForm().findField('intervals-column-show').setDisabled(false); | |
34 | + if (this.catalogsColumns.hasOwnProperty(paramId)) { | |
35 | + var combobox = this.getForm().findField('intervals-param-show'); | |
36 | + combobox.store.loadData(this.catalogsColumns[paramId]); | |
37 | + combobox.setValue(this.object.get('intervals-param-show')); | |
38 | + } | |
39 | + else { | |
40 | + AmdaAction.getAllColumnNames(paramId, function(result){ | |
41 | + if (result && result['success']) { | |
42 | + this.catalogsColumns[paramId] = result['result']; | |
43 | + me.updateColumnInfoCombo(); | |
44 | + } | |
45 | + }, this); | |
46 | + } | |
47 | + }, | |
48 | + | |
19 | 49 | getFormItems: function() { |
50 | + var me = this; | |
20 | 51 | var legendItems = [ |
21 | 52 | this.addStandardText('legend-text-value', 'Text'), |
22 | 53 | this.addStandardCombo('legend-text-position', 'Position', amdaDefaultConfigs.availableLegendTextPositions), |
23 | 54 | this.addStandardFont('legend-text-font')] |
24 | - | |
55 | + | |
25 | 56 | return [ |
26 | 57 | this.addColorsPicker('intervals-color', 'Color', amdaDefaultConfigs.availableColorsNew, 'none'), |
58 | + this.addStandardFieldSet('Show column info','intervals-column-show', [ | |
59 | + this.addStandardCombo('intervals-param-show', 'Parameter to show'), | |
60 | + ], function(name, value, oldValue) { | |
61 | + me.updateColumnInfoCombo(); | |
62 | + }), | |
27 | 63 | this.addStandardFieldSet('Legend', 'legend-text-activated', legendItems) |
28 | 64 | ]; |
29 | 65 | } | ... | ... |
js/app/views/PlotComponents/PlotResultImage.js
... | ... | @@ -30,6 +30,8 @@ Ext.define('amdaPlotComp.PlotResultImage', { |
30 | 30 | |
31 | 31 | showVerticalCursor : true, |
32 | 32 | showHorizontalCursor : true, |
33 | + | |
34 | + tooltip: true, | |
33 | 35 | |
34 | 36 | constructor: function(config) { |
35 | 37 | this.init(config); |
... | ... | @@ -210,6 +212,7 @@ Ext.define('amdaPlotComp.PlotResultImage', { |
210 | 212 | height : config.height, |
211 | 213 | onMouseMove : config.onMouseMove, |
212 | 214 | onContextMenu : config.onContextMenu, |
215 | + tooltip : null, | |
213 | 216 | listeners : { |
214 | 217 | render : function(img, eOpts){ |
215 | 218 | me.refreshMe(); |
... | ... | @@ -246,7 +249,18 @@ Ext.define('amdaPlotComp.PlotResultImage', { |
246 | 249 | me.onContextMenu(event.getX(), event.getY(), event.getX()-me.getPosition()[0], event.getY()-me.getPosition()[1]); |
247 | 250 | return false; |
248 | 251 | } |
249 | - } | |
252 | + }, | |
253 | + afterrender: function(c) { | |
254 | + me.tooltip = Ext.create('Ext.tip.ToolTip', { | |
255 | + target: c.getEl(), | |
256 | + trackMouse: true, | |
257 | + dismissDelay: 0, | |
258 | + showDelay: 0, | |
259 | + hideDelay: 0, | |
260 | + autoHide: true, | |
261 | + disabled: true | |
262 | + }); | |
263 | + } | |
250 | 264 | } |
251 | 265 | }; |
252 | 266 | ... | ... |
js/app/views/PlotComponents/intervalSelection/ZoomIntervalSelection.js
... | ... | @@ -30,13 +30,17 @@ Ext.define('amdaPlotComp.intervalSelection.ZoomIntervalSelection', { |
30 | 30 | if (this._notValidValues()) { |
31 | 31 | myDesktopApp.warningMsg('The Input Values are not defined'); |
32 | 32 | } else { |
33 | + | |
34 | + var minVal = Ext.Date.format(this.getField1Value(), 'Y-m-d\\TH:i:s.u'); | |
35 | + var maxVal = Ext.Date.format(this.getField2Value(), 'Y-m-d\\TH:i:s.u'); | |
36 | + | |
33 | 37 | this.hostCmp.callInteractivePlot({ |
34 | 38 | 'action': 'zoom', |
35 | 39 | 'interactiveId': this.interactiveId, |
36 | 40 | 'panelId': this.panelId, |
37 | 41 | 'axeId': this.type, |
38 | - 'min': this.getField1Value(), | |
39 | - 'max': this.getField2Value() | |
42 | + 'min': minVal, | |
43 | + 'max': maxVal | |
40 | 44 | }); |
41 | 45 | |
42 | 46 | this._resetHostCmpSelection(); | ... | ... |
js/app/views/PlotTabResultUI.js
... | ... | @@ -326,8 +326,13 @@ Ext.define('amdaUI.PlotTabResultUI', { |
326 | 326 | var text = ''; |
327 | 327 | if (me.panelImage) { |
328 | 328 | if (!panel) { |
329 | - me.panelImage.resetCursor(); | |
330 | 329 | text += 'No panel'; |
330 | + me.panelImage.resetCursor(); | |
331 | + if (me.panelImage.tooltip.isVisible()) { | |
332 | + me.panelImage.tooltip.update(''); | |
333 | + me.panelImage.tooltip.setDisabled(true); | |
334 | + me.panelImage.tooltip.hide(); | |
335 | + } | |
331 | 336 | } |
332 | 337 | else { |
333 | 338 | text += 'Panel Id : '; |
... | ... | @@ -350,14 +355,14 @@ Ext.define('amdaUI.PlotTabResultUI', { |
350 | 355 | var yLeftText = ''; |
351 | 356 | var colorText = ''; |
352 | 357 | var yRightText = ''; |
353 | - var intervalText = ''; | |
358 | + var intervals = []; | |
354 | 359 | var image=this; |
355 | 360 | Ext.each(panel.plotArea.axes, function (axis) { |
356 | 361 | switch (axis.id) { |
357 | 362 | case 'timeAxis': |
358 | 363 | var crtTimestamp = amdaPlotComp.PlotContextManager.toAxisValue(axis, panel.plotArea.x, panel.plotArea.x + panel.plotArea.width, sourceXPos); |
359 | 364 | var crtTime = new Date(crtTimestamp * 1000); |
360 | - intervalText = amdaPlotComp.PlotContextManager.getIntervalCoordInfo(me.crtContext, panel, crtTimestamp); | |
365 | + intervals = amdaPlotComp.PlotContextManager.getIntervalsOverMouse(me.crtContext, panel, crtTimestamp); | |
361 | 366 | xText = crtTime.toJSON(); |
362 | 367 | break; |
363 | 368 | case 'y-left': |
... | ... | @@ -385,13 +390,34 @@ Ext.define('amdaUI.PlotTabResultUI', { |
385 | 390 | text += (', Y Left : ' + yLeftText); |
386 | 391 | if (yRightText != '') |
387 | 392 | text += (', Y Right : ' + yRightText); |
388 | - if (intervalText != '') | |
389 | - text += (', ' + intervalText); | |
390 | 393 | if (colorText != '') |
391 | 394 | text += (', Z : '+ colorText); |
395 | + | |
396 | + // Update tooltip | |
397 | + if (Object.keys(intervals).length > 0) { | |
398 | + var tooltipText = me.getIntervalsTooltipText(intervals); | |
399 | + me.panelImage.tooltip.update(tooltipText); | |
400 | + me.panelImage.tooltip.setDisabled(false); | |
401 | + if (!me.panelImage.tooltip.isVisible()) { | |
402 | + me.panelImage.tooltip.show(); | |
403 | + me.panelImage.tooltip.setDisabled(false); | |
404 | + } | |
405 | + } | |
406 | + else if (me.panelImage.tooltip.isVisible()) { | |
407 | + me.panelImage.tooltip.update(''); | |
408 | + me.panelImage.tooltip.setDisabled(true); | |
409 | + me.panelImage.tooltip.hide(); | |
410 | + | |
411 | + } | |
392 | 412 | } |
393 | - else | |
413 | + else { | |
394 | 414 | me.panelImage.resetCursor(); |
415 | + if (me.panelImage.tooltip.isVisible()) { | |
416 | + me.panelImage.tooltip.update(''); | |
417 | + me.panelImage.tooltip.setDisabled(true); | |
418 | + me.panelImage.tooltip.hide(); | |
419 | + } | |
420 | + } | |
395 | 421 | } |
396 | 422 | } |
397 | 423 | me.coordinatesField.setText(text); |
... | ... | @@ -474,18 +500,37 @@ Ext.define('amdaUI.PlotTabResultUI', { |
474 | 500 | } |
475 | 501 | ]); |
476 | 502 | |
477 | - if (timeAxisContext && amdaPlotComp.PlotContextManager.isInterval(me.crtContext, panel, crtTimestamp)) { | |
478 | - var allintervalParams = amdaPlotComp.PlotContextManager.getAllIntervalParams(me.crtContext, panel, crtTimestamp); | |
479 | - if (allintervalParams.length > 0) { | |
480 | - | |
481 | - var links = amdaPlotComp.PlotContextManager.getIntervalLinks(allintervalParams); | |
482 | - if (links.length > 0) { | |
503 | + if (timeAxisContext) { | |
504 | + var intervals = amdaPlotComp.PlotContextManager.getIntervalsOverMouse(me.crtContext, panel, crtTimestamp); | |
505 | + if (Object.keys(intervals).length > 0) { | |
506 | + var links = []; | |
507 | + Ext.Object.each(intervals, function (ttorcatname, intervals) { | |
508 | + Ext.each(intervals, function (interval) { | |
509 | + if (interval.params) { | |
510 | + Ext.Object.each(interval.params, function (paramKey, paramValue) { | |
511 | + if (paramValue.toLowerCase().startsWith("http://") || paramValue.toLowerCase().startsWith("https://")) { | |
512 | + if (links.indexOf(paramValue) < 0) { | |
513 | + links.push(paramValue); | |
514 | + } | |
515 | + } | |
516 | + }); | |
517 | + } | |
518 | + }); | |
519 | + }); | |
520 | + if (links.length > 0) { | |
483 | 521 | var menu = Ext.create('Ext.menu.Menu', { plain: true }); |
484 | - var realLinks = amdaPlotComp.PlotContextManager.setIntervalsRef(links, menu); | |
522 | + Ext.each(links, function (link) { | |
523 | + menu.add({ | |
524 | + text: link, | |
525 | + handler: function () { | |
526 | + window.open(link, "_blank"); | |
527 | + } | |
528 | + }); | |
529 | + }); | |
485 | 530 | me.contextualMenu.add('-'); |
486 | 531 | me.contextualMenu.add([ |
487 | 532 | { |
488 | - text: 'Open references (' + realLinks.length + ')', | |
533 | + text: 'Open references (' + links.length + ')', | |
489 | 534 | menu: menu, |
490 | 535 | scope: me |
491 | 536 | }]); |
... | ... | @@ -524,6 +569,23 @@ Ext.define('amdaUI.PlotTabResultUI', { |
524 | 569 | this.panelImage.refreshMe(); |
525 | 570 | }, |
526 | 571 | |
572 | + getIntervalsTooltipText: function(intervals) { | |
573 | + var intervalText = ''; | |
574 | + Ext.Object.each(intervals, function (ttorcatname, intervals) { | |
575 | + intervalText += '<b>' + ttorcatname + ' :</b><br>'; | |
576 | + Ext.each(intervals, function (interval) { | |
577 | + intervalText += " • #" + interval.id + ': ' + new Date(parseFloat(interval.start)*1000).toISOString() + ' - ' + new Date(parseFloat(interval.stop)*1000).toISOString(); | |
578 | + if (interval.info && interval.info != '') { | |
579 | + intervalText += ", " + interval.info; | |
580 | + } | |
581 | + intervalText += "<br>" | |
582 | + }); | |
583 | + intervalText += '<br>'; | |
584 | + }); | |
585 | + | |
586 | + return intervalText; | |
587 | + }, | |
588 | + | |
527 | 589 | updateTimeTableInfo: function () { |
528 | 590 | if (!this.navToolBar) |
529 | 591 | return; | ... | ... |
js/resources/css/amda.css
... | ... | @@ -638,4 +638,9 @@ p + p { |
638 | 638 | .cm-s-default .cm-amda { |
639 | 639 | color: rgb(9, 134, 218); |
640 | 640 | font-weight: bold; |
641 | +} | |
642 | + | |
643 | +.amda-astro-tree-icon-leaf { | |
644 | + background-image: url(images/tree/leaf.gif); | |
645 | + background-size: contain; | |
641 | 646 | } |
642 | 647 | \ No newline at end of file | ... | ... |
php/classes/AmdaAction.php
... | ... | @@ -810,6 +810,18 @@ class AmdaAction |
810 | 810 | return $objectMgr->getObject($id, $nodeType); |
811 | 811 | } |
812 | 812 | |
813 | + public function getAllColumnNames($id){ | |
814 | + $objectMgr = new CatalogMgr(); | |
815 | + $type = (strpos($id, 'sharedcatalog') === 0) ? 'sharedcatalog' : 'catalog'; | |
816 | + $columnInfos = $objectMgr->getCatalogParamDescription(array('id' => $id, 'type' => $type)); | |
817 | + if (!$columnInfos['success']) | |
818 | + return $columnInfos; | |
819 | + $columnNames = array(); | |
820 | + foreach ($columnInfos['parameters'] as $columnInfo){ | |
821 | + $columnNames[] = array("key" => $columnInfo['id'], "value" => $columnInfo['name']); | |
822 | + } | |
823 | + return array('success' => true ,"result" => $columnNames); | |
824 | + } | |
813 | 825 | /* |
814 | 826 | * $obj = { id: node.id, leaf: node.leaf, nodeType: node.nodeType } |
815 | 827 | */ |
... | ... | @@ -1064,6 +1076,8 @@ class AmdaAction |
1064 | 1076 | // just convert TT / Catalog |
1065 | 1077 | if ($obj->nodeType == "download" && $obj->downloadSrc == "1") |
1066 | 1078 | return $this->executeRequest($obj, FunctionTypeEnumClass::TTCONVERT); |
1079 | + else if ($obj->nodeType == "download" && $obj->downloadSrc == "2") | |
1080 | + return $this->executeRequest($obj, FunctionTypeEnumClass::DLOBJECT); | |
1067 | 1081 | else if (isset($obj->action)) |
1068 | 1082 | return $this->executeRequest($obj, FunctionTypeEnumClass::ACTION); |
1069 | 1083 | else | ... | ... |
php/config.php