root/trunk/ToDo

Revision trunk,182, 15.7 kB (checked in by Suren A. Chilingaryan <csa@dside.dyndns.org>, 7 months ago)

New TOSKA configuration

Line 
1 BUGS
2 ====
3  - Y-value precision of big numbers under high zooms (500.000000000001) should
4  be implemented using string arithmetics. Negative numbers should be considered,
5  see implementation at php code.
6   a) window.js/SetCustomAxis/*.toPrecision - increase from 7 to something....
7   b) implement computations using string arithmetics
8
9  - AXIS described in database tables are not correctly visible in Tree-view.
10  This is becuase it only defined for a single reader, while tree view combines
11  multiple readers. As a solution, we can have special reader which will access
12  the AXIS information and provide it globaly for setup.
13
14  - Support for Database names
15
16 Version 0.0.8 (DATA Handling)
17 =============
18 1. Control infastracture
19     a) Finalyze checking of values prior to setting setpoints
20     b) Implement VirtualControlGroup joining specified control groups, to
21     refer from ExpressVI
22     d) VirtualController. COMPLEXID is just merge of groups (we don't have
23     time to synchronize here)
24     e) LabVIEW ExpressVI
25 2. Multi-windows mode, allow to disconnect div's and open in standalone window
26 3. Support for secondary graph, selection+click, draw
27 4. Run-indicators in navigation bar
28 5. Import descriptions from excel, axis, masks, item names
29 6. SEARCH
30     a) Search for interval where conditions (<>=) are met (only aggregated
31     caching tables are used)
32     b) "Jan" find all Januaries containing data and auto-select the current
33     one
34    
35 Version 0.0.9 (Group merging and basic arithmetic)
36 =============
37 4. Merging groups using CACHESet / Virtual Group Joiner
38     a) Provide CACHESet::GetData
39     b) Provide CACHESetReader
40 5. Basic arithmetic operations on channels
41     a) Organized as a separate virtual group
42     b) set base group
43     c) cached
44
45 Version 0.0.10 (Weather Tower)
46 =============
47 1. 24 hour cache to hide day changes
48
49 2. Additional axis. Configuration of masks...
50
51
52 Version 0.0.11 (DRAW, LEGEND, AXES)
53 ==============
54 A. Better Navigation
55  0. Colors
56  1. MultiAxis, prevent complete filling:
57     a) axis stacked vertically
58     b) line length calculation
59     c) better single combined approach
60  2. Activate / deactivate Axis in single-axis mode, then zooming only on them.
61  3. Move left-rigth/up-down then dragging on the axis.
62 B. LEGEND
63     a) Information about clicked location
64     b) Add "Show Only", "Remove" buttons.
65     C) Secondary graphs (like altitude profiles) in the LEGEND, or clickable
66 C. GRAPH improvements requested by Andreas
67  1. Show Legend on graph, optionally (another parameter)
68  2. In single channel mode, draw MIN-MAX-MEAN-?
69
70 Version 0.0.12 (Navigation Bar)
71 ==============
72 1. Again use cropper but with fixed width and always visible
73    prefix: source, selector_config
74 2. As a main "navigator" provide point density (red - green?), with special
75     color highlight the places where are distance between points exceeding
76     specified threshold.
77
78 VERSION 0.0.13 (Download/Export)
79 ==============
80 1. Download Page
81     Instead of direct download, - download files in special folder and
82     afterwards, allow users to download them, delete, etc. Report status
83     "still donwloading".
84 2. Progress function in Export class
85     a) Divides first by groups/sources. Each is allocated similiar slice of
86     percents. Then within READER::ExportGroup just track position in interval.
87
88 VERSION 0.0.14 (Marks, Secondary Graph)
89 ==============
90 1. Marking engine
91     a) In selection add mark (with default value 1)
92     b) Ad Marks module to left pane displaying all registered marks for current
93     window and mask. Allow to set specific value or cancel mark.
94     c) Support filtering of values marked with certain mark.
95
96 2. Secondary graph for weather tower
97     a) Using selection, getting area and then clicking needed profile
98     (temperature, wind, .?). The available profiles are independent of
99     group/db_mask selection
100     b) In appropriate box of left pane, we will have picture (starting on
101     left edge) and slider allowing navigation. About 10-50 positions
102     distributed uniformely over time. On each position the first item
103     after time is displayed. The time stamp is shown on as well.
104
105 ----------------------------------------------------------------------------
106
107 VERSION 0.0.15 (Aggregation)
108 ==============
109 1. Weather tower: there is differnt types of channels: analog, count rate,
110    digital (flags), direction. This data should be aggregated and displayed
111    in different ways.
112    For example,
113     a) 355grad and 5grad should not be averaged to 180, but to 0
114     b) digital flags could not be averaged at all.
115     ...
116 2. MED aggregation:
117     MEDIAN style approach. On each smalles caching interval it is MEDIAN. Then
118     the middle of this intervals select to represent value of next caching
119     level. And so on.
120
121
122 Version 0.0.50 (Misc)
123 ==============
124 A Handling graph ends
125   1. With "optimize_time_axes=false", ADEI ��������� �� � ����    ���� ����'|'. ������� ��� ����� ����� ���
126     ��� �������� �� ��, ��� ����������������    ����� ������ [ ��� ��� ������������� �����    ���].
127     ������� ��� �� ����, �� �� ���������
128     ����������� ???
129   2. Remove LIMIT from SQL requests in DATAInterval
130   3. Enable Flexible mode for intervals in DRAW (this could damage edges, so it
131     should be done together with 1)
132
133 C. SEARCH
134     - Buttons to Open/Close result descriptions and module results
135     - Tagging current configuration (Title, Description, Props) in CacheDB
136 D. Support for auxilliary graph ( Temperature profiles, for example)
137 E. Support for marking data points ( ignoring/using, weather)
138 F. Specify the current element (number) in graph, not group? Or in other way
139  indicate what we are showing without openning sidebar.
140 G. Clean screen after error
141 H. Synchronize menu with sidebar functionality (+Aggregation,?)
142 I. Horizontal scrolling in Source Tree should be always visible (standard
143    procedure will corrupt window)
144
145
146 Version 0.0.51 (Code beutification)
147 ==============
148     1. require, include_once => $ADEI->RequireClass(array(), overridable)
149     2. globals => $ADEI->GetGlobalOption
150     3. Remove references(&) from all class variables
151     4. Use static ADEI calls where possible
152    
153
154 Version 0.1 (MASK/Experiment Editor)
155 =============
156 1. Edit Masks / Experiments (XForms)
157     Gr1  -------------         -------------
158     Gr2 | v v v v v v         | name from to
159     ... |
160
161 2. Each mask should allow item specific options:
162     + Display on the second (right) scale
163     + Logarithmic
164     + ...
165
166 3. Include Save Mask, Save Time Window buttons
167
168 4. We need to update SOURCE and MENU if new mask/experiment is added?
169
170 5. SELECT chooses the last from the list (Custom in the MASK/Experiment menus)
171    if there are no specified value.
172
173
174 Version 0.2 (Subcaches)
175 ===========
176 1. Support for Subcaches (if density is above threshold use apporpiate
177    subcache). Join current table and subcache to automatically sort.
178
179 2. Show somethere information about used CACHE and its configuration
180
181 3. CACHE updating daemon and check renewals
182
183 Version 0.3 (Local Time)
184 ===========
185 1. Support for Local Time. Major obstacle is synchronization between php (jpgraph)
186    and browsers. Just using timezone offset doesn't allow us to find out
187    DST changes and etc.
188    In Mozilla and Safari, however, there is tricky way of obtaining time-zone.
189       var now = new Date();
190       now.toString();
191     will return the lexcial name of time-zone (however, the names could differ
192     between php and JS?). It is possible to extract this time zone info and
193     pass to php. From, other side Opera and IE7 returns just numerical
194     representation of offset GMT+, without real name. And there is no any
195     warranty on toString() format change...
196    
197     May be it is should be solved with horizontal labeling. We just pass from
198     JS few time values and fixing places to set them?
199
200 VERSION 0.5 (Real-time Display)
201 ===========
202 1. Real-time display of the last 100-200 records [separate window]
203
204
205 VERSION 0.6 (Side-menu, Users)
206 ===========
207 1. Redesign side menu (popups)
208     a) Optionaly open over graph (skip, just b?)
209     b) Single popup. And just select current mode (see google maps?)
210 2. Users loggons / Multiple options / ...
211
212 Version 0.7 (Fixups)
213 ===========
214 1. What will hapen when clicking during long redraw (many items).
215
216 2. Check Firefox / IE memory consumption. Memory leaks?
217
218 3. Save opened page in history
219
220 4. READER and CACHE data intervals mistmatch. What to do (use CACHE intevals
221    if notification turned off)? Month/Day/Hour intervals within READER data
222    but out of the CACHE data? The accuracy is droped, since we calculating
223    amount of points for bigger window.
224
225 5. Limit dhtmlHistory size (optionally disable: All/Gecko/None)
226
227 6. Reimplement CACHEInterval using CACHE0 'id' instead of 'time'+'ns'
228
229 7. After an error we should go back in history. Otherwise it'll be corrupted.
230
231 8. Depsite width is 100% the Item Selector is not resized to fill all available
232    space (mozilla, safari).
233
234
235 VERSION 0.8
236 ===========
237     - Autogenerate experiments by thresholding some of the channels (set with
238     sql statements?)
239
240 VERSION 0.9
241 ===========
242     - Image caching? Separate scales?
243     - Cache few default zoom levels and several screens in all directions?
244     - On end-crop start pereparing image?
245     - Permanent server performing requets?
246     - Table
247         adei draw json version (to prevent new/missing json options), from-to,
248         json options to return, image_file
249
250 ZEUS Related
251 ============
252 1. Start Experiment / Stop Experiment to ZEUS web control
253 3. ZEUS MSSQL Backup
254
255
256 Future Versions - Architectural Questions
257 ===============
258 1. Use "nanoseconds since" instead current quite strange system with
259    number-string timing. Or?
260
261 2. Graph precision calulating. \/\/______\/\. Using longest interval? But it
262     will damage other cases (points).
263
264 3. Joint visualization of multiple LOGGROUPs. How?
265     a) Virtual Groups joining several physical ones?
266     b) ...?
267
268
269 Future Versions - Beter Usability
270 ==============
271 1. Currenly double-click zoom is only working within selection. However, if we
272    are doing horizontal or vertical zooms, there are more areas selected.
273    Should we make them double-clickable as well? Or not?
274
275 2. At the moment on the browser window resize the graphic is not autoupdated,
276    we probably should force update.
277
278 3. The following case: We made a selection and opened one of the popups. The
279    forced graph update have canceled selection. However, the selected values
280    are still present window configuration dialog.
281    Should we cancel them? Or could user to use them? Or should we draw
282    selection after update?
283
284 4. Position Apply Button within 'Source' popup always in the bottom of the
285    popup (if initial size (defined by open-button size) is bigger than
286    actual content size, than the Apply Button will be positioned just after
287    content).
288
289 5. Do more on graph navigation.
290     a) Speed of zooming / mooving (with plus/minus keys?)
291     b) Arrows for mooving, Backspace go back in history
292     c) Some mouse action for going back in history
293     d) Drag window for moving.
294
295 6. Open sidebar with single click. All popups at once
296
297 Future Versions - Interface
298 ===============
299 1. Rewrite JS calendar
300     a) Straight forward way of selecting time (not update date every time
301     afterwards)
302     b) Allow multiple windows (title)
303     c) Selection GMT/Local time (?)
304     d) Open correct month/year page, not current one
305     e) Date(toString/Parse) functions are behaving differently on different
306     browsers (mozilla for example not adding timezone information, but works
307     in the user time zone). It is completely Okey until only that functions
308     are used. Therefore, the timepicker should be changed to use this
309     functions for the date printout.
310
311 2. Near borders of graph remove the control from the croper, change pictogram
312    to 'hands' and allow moving source_window currently on display.
313    
314 3. Move window with keyboard keys
315
316 4. Introduce graph options (Logarithmic). Move login to somethere.
317
318 5. If we had selcted an area of graph and afterwards in controls have altered
319    the window properties. At the moment the selection is canceled. It would
320    be nice to check if new values are within the currently displayed window
321    and, if so, adjust selection instead.
322    
323 8.At the moment we are reseting the mask/experiment/window properties after
324 LogGroup have been changed. We should try to use current
325     a) window/interval if they are inside the range.
326     b) Preserve "all" mask (and named masks as well if they exists for both
327     groups)
328    
329 9. Do not execute update while we are changing configuration.
330
331 10. Optimize cssSetProperty by caching found classes.
332
333 11. Statusbar improvements
334     a) Provide more information on statusbar
335     b) Possibility to remove statusbar from the screen (small closer?)
336
337 12. Extra options in aggregator
338     + logarithmic scale (?)
339     + force better/worse precision (?)
340
341 13. Use "Katrin", "TOSKA" pictures as menu opener instead of nasty button
342     arround.
343
344    
345 Future Versions - Backend
346 ===============
347 1. Filter data, ignore zeroes? Etc.
348
349 2. READER. Exchange remote data source with local backup.
350
351 3. LOGGROUP joiner.
352
353 4. GRAPH: Reusing existing files (at the moment we don't store enough
354 information to do that (xmin,xmax,ymin,ymax,etc.)
355
356 5. APPFilter.
357   a) Add support for global and per-block header/footer (with options parsing)
358   b) Block separators (messages sent between two blocks) [ if 'groupmode=false']
359
360 6. Support for 'omit_raw_cache' option (using READER instead of raw cache table)
361   Intended to reduce caching table size if connection to data source is reliable
362   and it is not overloaded
363
364 Future Version - Support Tools
365 ==============
366 1. ROOT
367   a) Provide subsecond precision.
368
369
370
371 Very Future Versions
372 ====================
373 1. SELECTION.
374     a) Show statistics (if single-item-graph)
375     b) Show correlation (if two-items-graph)
376 2. CONFIGURATION (Data sources/groups/experiments/etc.)
377     a) Load big XML configuration on startup and use it to generate all menus.
378     Expected benfits:
379         1. Stability: Prevents errors during SOURCE updates
380         2. Easy programming: The asynchronousity is eleminated
381     b) At least load all SOURCE menus (single update, I mean) in one chunk
382 3. ERROR Handling. Standartize error handling in JS scripts
383     a) Throw from async parts???? And call adeiError in all others???
384     b) Use "translate" calls everythere.
385 4. GRAPH. Multiple data aggregation modes. Currently we are using MIN-MAX,
386     but we could provide at least MEAN mode easily.
387     a) Think about providing MEDIAN?
388     b) MEAN could be over items, or over length (considering that the old
389     value is valid until next one).
390 5. Develop streamable TAR archives, for in-place streaming multiple groups. In
391     this case the user will receive the data will we preparing next portion.
392     a) TAR. In the block begining [0,size] data_block, used_size
393     b) DIME?
394 6. At the moment while calculating the data gaps for grouped (aggregated) data
395     we are assuming what the data is uniformely distributed over interval.
396     This is not precise enough (if something is really going wrong, it likely
397     what all missing data is concentrated in one place and, threfore, the real
398     gap is considerably bigger then estimated one).
399      Unfortunately, the SQL syntax of MySQL server is not  allowing us to
400     calculate distance between two sequent rows. Therefore, we need to
401     implement stored function for that purpose and, then, implement
402     CACHE_PRECISE_GAPS support in the DATAInterval.
403    
404    To correct the 'missing' values stored in the database (which are also not
405    precise enough, value <= real_value < 3*value) we could make another
406    iteration over the data and correct approximated values.
407    
408
409
410
411 10. Add Item to the graph.
412 11. Y-axes precise arithmetic if needed (and other rescalling options)
Note: See TracBrowser for help on using the browser.