Adjust handling for second grid
authorJoey Schulze <joey@infodrom.org>
Sun, 20 Jan 2013 12:55:33 +0000 (13:55 +0100)
committerJoey Schulze <joey@infodrom.org>
Sun, 20 Jan 2013 12:55:33 +0000 (13:55 +0100)
 - update only if visible, instead of available
 - clear second grid rows upon revisualising
 - only store grid offset for main grid

lib/functions.js

index 799ae99..cd88b21 100644 (file)
@@ -519,7 +519,7 @@ function gridDrillDown(e)
        }
     }
 
-    if (typeof second != 'undefined') {
+    if (second_visible()) {
        second.buffer.options.requestParameters = ['second_id=' + value];
        grid_update(second);
     }
@@ -531,7 +531,8 @@ function gridDrillDown(e)
 var grid_offset = 0;
 function gridOnScroll(grid, offset)
 {
-    grid_offset = grid.buffer.lastOffset;
+    if (grid.tableId.substr(-8) !== '__second')
+       grid_offset = grid.buffer.lastOffset;
     var max = Math.min(offset+grid.pageSize, grid.buffer.totalRows);
     var info = document.getElementById('info_' + grid.tableId);
     info.innerHTML = 'Datensatz ' + (offset+1) + ' - ' + max + ' von ' + grid.buffer.totalRows;
@@ -558,7 +559,10 @@ function grid_update(grid, filter, value)
     grid.setImages();
     if (grid.bookmark) grid.bookmark.innerHTML="&nbsp;";
     grid.clearRows();
-    grid.buffer.fetch(grid_offset);
+    if (grid.tableId.substr(-8) !== '__second')
+       grid.buffer.fetch(grid_offset);
+    else
+       grid.buffer.fetch(0);
 }
 
 function grid_update_filters(grid)
@@ -730,6 +734,13 @@ function resize_grids()
     grid.resizeWindow();
 }
 
+function second_visible()
+{
+    if (typeof second == 'undefined') return false;
+    var div_second = document.getElementById('second');
+    return div_second.style.display == '';
+}
+
 var div_grid_height = '';
 function second_toggle()
 {
@@ -737,13 +748,7 @@ function second_toggle()
     var div_second = document.getElementById('second');
     var toggle_icon = document.getElementById('icon_toggle');
 
-    if (div_second.style.display == 'none') {
-       div_grid.style.height = div_grid_height;
-       div_second.style.display = '';
-       grid.resizeWindow();
-       second.resizeWindow();
-       toggle_icon.style.display = 'none';
-    } else {
+    if (second_visible()) {
        div_grid_height = div_grid.style.height;
        div_second.style.display = 'none';
 
@@ -751,5 +756,12 @@ function second_toggle()
        div_grid.style.height = height + 'px';
        grid.resizeWindow();
        toggle_icon.style.display = '';
+    } else {
+       div_grid.style.height = div_grid_height;
+       div_second.style.display = '';
+       grid.resizeWindow();
+       second.clearRows();
+       second.resizeWindow();
+       toggle_icon.style.display = 'none';
     }
 }