BUGS
====


BUGS, Reported but not detected
====
1. Check JS preciseMath in different browsers
2. Check timezone in JS and PhP (there was difference in 3600 seconds, at
   the moment not reproducible. But check anyway)
   Another report: PhP - GMT, JS - CET.
3. After "ResetY" and zooming again (without vertical restriction), the old
    Y restriction is restored. Or something in that way.

Version 0.0.7 (Navigation, Controls)
=============
1. Create CONTROLS poup
    + Support for dynamic items inside.
    + Export is first of them
2. Add Aggregation options 
    + aggregation (approach), interpolate, show_marks, show_gaps
    + logarithmic
    + force better/worse precision (?)
3. Some basic information about current mouse location?

4. After an error we should go back in history. Otherwise it'll be corrupted.

5. Scroll button + Shift, Ctrl to move left/right, top/bottom (see standards
for that). Default actions causes problems. Use some keys. Special handling
of just zooming.
    a) on the edges move in the appropriate area, or zoom if no space to move.


Version 0.0.8 (LEGEND)
=============
1. LEGEND. 
    a) Information about clicked location
    b) Add "Show Only", "Remove" buttons.
2. The LEGEND is not always shown ()
3. The LEGEND precision problem with subsecond graphics.

Version 0.0.9 (Handling graph ends)
=============
1. With "optimize_time_axes=false", ADEI     
       '|'.        
       .  ,     
       [        
     ].
        , ..      
      ???
2. Remove LIMIT from SQL requests in DATAInterval
3. Enable Flexible mode for intervals in DRAW (this could damage edges, so it
    should be done together with 1)


Version 0.0.10
=============
1. Specify the current element (number) in graph, not group? Or in other way
 indicate what we are showing without openning sidebar.

2. Clean screen after error

3. Comment debugging printf's: draw, cache

4. "Help" module with current version and keys descriptions [xml+xslt]

Version 0.1 (MASK/Experiment Editor)
=============
1. Edit Masks / Experiments (XForms)
    Gr1  -------------         -------------
    Gr2 | v v v v v v         | name from to
    ... |

2. Each mask should allow item specific options:
    + Display on the second (right) scale
    + Logarithmic 
    + ...

3. Include Save Mask, Save Time Window buttons

4. We need to update SOURCE and MENU if new mask/experiment is added?

5. SELECT chooses the last from the list (Custom in the MASK/Experiment menus) 
   if there are no specified value.


Version 0.2 (Subcaches)
===========
1. Support for Subcaches (if density is above threshold use apporpiate 
   subcache). Join current table and subcache to automatically sort.

2. Show somethere information about used CACHE and its configuration

3. CACHE updating daemon and check renewals


VERSION 0.3 (Download/Export)
===========
1. Download Page
    Instead of direct download, - download files in special folder and 
    afterwards, allow users to download them, delete, etc. Report status
    "still donwloading".

2. EXPORT. Implement data resampling

3. Excel doesn't accept more than 65536 rows? What to do? Multiple sheets?

VERSION 0.4 (Navigation Bar)
===========
1. Navigation Bar. Again use cropper but with fixed width and always visible
   prefix: source, selector_config

1.1 As a main "navigator" provide point density (red - green?), with special
    color highlight the places where are distance between points exceeding
    specified threshold.

VERSION 0.5 (Real-time Display)
===========
1. Real-time display of the last 100-200 records [separate window]


VERSION 0.6 (Side-menu, Users)
===========
1. Redesign side menu (popups)
    a) Optionaly open over graph (skip, just b?)
    b) Single popup. And just select current mode (see google maps?)
2. Users loggons / Multiple options / ...


Version 0.7 (Fixups)
===========
1. What will hapen when clicking during long redraw (many items).

2. Check Firefox / IE memory consumption. Memory leaks?

3. Save opened page in history

4. READER and CACHE data intervals mistmatch. What to do (use CACHE intevals
   if notification turned off)? Month/Day/Hour intervals within READER data
   but out of the CACHE data? The accuracy is droped, since we calculating
   amount of points for bigger window.

5. Limit dhtmlHistory size (optionally disable: All/Gecko/None)


ZEUS Related
============
1. Start Experiment / Stop Experiment to ZEUS web control
2. Alarms / SysLog Pages (modules)
3. ZEUS MSSQL Backup


Future Versions - Architectural Questions
===============
1. Use "nanoseconds since" instead current quite strange system with 
   number-string timing. Or?

2. Graph precision calulating. \/\/______\/\. Using longest interval? But it
    will damage other cases (points).

3. Joint visualization of multiple LOGGROUPs. How?
    a) Virtual Groups joining several physical ones?
    b) ...?


Future Versions - Beter Usability
==============
1. Currenly double-click zoom is only working within selection. However, if we
   are doing horizontal or vertical zooms, there are more areas selected.
   Should we make them double-clickable as well? Or not?

2. At the moment on the browser window resize the graphic is not autoupdated,
   we probably should force update.

3. The following case: We made a selection and opened one of the popups. The
   forced graph update have canceled selection. However, the selected values
   are still present window configuration dialog.
   Should we cancel them? Or could user to use them? Or should we draw 
   selection after update?

4. Position Apply Button within 'Source' popup always in the bottom of the
   popup (if initial size (defined by open-button size) is bigger than 
   actual content size, than the Apply Button will be positioned just after
   content).

Future Versions - Interface
===============
1. Rewrite JS calendar
    a) Straight forward way of selecting time (not update date every time
    afterwards)
    b) Allow multiple windows (title)
    c) Selection GMT/Local time (?)
    d) Open correct month/year page, not current one
    e) Date(toString/Parse) functions are behaving differently on different
    browsers (mozilla for example not adding timezone information, but works
    in the user time zone). It is completely Okey until only that functions
    are used. Therefore, the timepicker should be changed to use this 
    functions for the date printout.

2. Near borders of graph remove the control from the croper, change pictogram
   to 'hands' and allow moving source_window currently on display.
   
3. Move window with keyboard keys

4. Introduce graph options (Logarithmic). Move login to somethere.

5. If we had selcted an area of graph and afterwards in controls have altered
   the window properties. At the moment the selection is canceled. It would
   be nice to check if new values are within the currently displayed window
   and, if so, adjust selection instead.
   
8.At the moment we are reseting the mask/experiment/window properties after 
LogGroup have been changed. We should try to use current 
    a) window/interval if they are inside the range.
    b) Preserve "all" mask (and named masks as well if they exists for both 
    groups)
    
9. Do not execute update while we are changing configuration.
10. Optimize cssSetProperty by caching found classes.
    
    
Future Versions - Backend
===============
1. Filter data, ignore zeroes? Etc.

2. READER. Exchange remote data source with local backup.

3. LOGGROUP joiner.

4. GRAPH: Reusing existing files (at the moment we don't store enough 
information to do that (xmin,xmax,ymin,ymax,etc.)

5. APPFilter. 
  a) Add support for global and per-block header/footer (with options parsing)
  b) Block separators (messages sent between two blocks) [ if 'groupmode=false']

6. Support for 'omit_raw_cache' option (using READER instead of raw cache table)
  Intended to reduce caching table size if connection to data source is reliable
  and it is not overloaded

Future Version - Support Tools
==============
1. ROOT
  a) Provide subsecond precision.



Very Future Versions
====================
1. SELECTION. 
    a) Show statistics (if single-item-graph)
    b) Show correlation (if two-items-graph)
2. CONFIGURATION (Data sources/groups/experiments/etc.)
    a) Load big XML configuration on startup and use it to generate all menus.
    Expected benfits:
	1. Stability: Prevents errors during SOURCE updates
	2. Easy programming: The asynchronousity is eleminated
    b) At least load all SOURCE menus (single update, I mean) in one chunk
3. ERROR Handling. Standartize error handling in JS scripts
    a) Throw from async parts???? And call adeiError in all others???
    b) Use "translate" calls everythere.
4. GRAPH. Multiple data aggregation modes. Currently we are using MIN-MAX, 
    but we could provide at least MEAN mode easily. 
    a) Think about providing MEDIAN?
    b) MEAN could be over items, or over length (considering that the old 
    value is valid until next one).
5. Develop streamable TAR archives, for in-place streaming multiple groups. In
    this case the user will receive the data will we preparing next portion.
    a) TAR. In the block begining [0,size] data_block, used_size
    b) DIME?
6. At the moment while calculating the data gaps for grouped (aggregated) data 
    we are assuming what the data is uniformely distributed over interval. 
    This is not precise enough (if something is really going wrong, it likely
    what all missing data is concentrated in one place and, threfore, the real
    gap is considerably bigger then estimated one).
     Unfortunately, the SQL syntax of MySQL server is not  allowing us to 
    calculate distance between two sequent rows. Therefore, we need to 
    implement stored function for that purpose and, then, implement 
    CACHE_PRECISE_GAPS support in the DATAInterval.
    
   To correct the 'missing' values stored in the database (which are also not
   precise enough, value <= real_value < 3*value) we could make another 
   iteration over the data and correct approximated values.
   



10. Add Item to the graph.
11. Y-axes precise arithmetic if needed (and other rescalling options)
