Support custom save function
[misc/kostenrechnung] / lib / functions.js
index b46c0b8..32b7116 100644 (file)
@@ -115,10 +115,10 @@ function form_init()
 
     if (!form) return;
 
-    for (var i=0; i<form.children.length; i++)
-       if (form.children[i].tagName.toLowerCase() == 'input'
-           && form.children[i].type.toLowerCase() == 'password')
-           form.children[i].value = '';
+    for (var i=0; i < form.childNodes.length; i++)
+       if (form.childNodes[i].nodeName.toLowerCase() == 'input'
+           && form.childNodes[i].type.toLowerCase() == 'password')
+           form.childNodes[i].value = '';
 }
 
 function select_update(id, options, empty)
@@ -134,6 +134,8 @@ function select_update(id, options, empty)
       obj.options[empty+i] = new Option(options[i].text,options[i].id,false,false);
 }
 
+var pre_save = false;
+var pre_insert = false;
 var post_save = function() { grid_update(grid); }
 var post_delete = function() { grid_update(grid); }
 
@@ -161,6 +163,12 @@ function form_save(obj)
        return form_insert(obj);
 
     info('');
+
+    if (typeof pre_save == 'function')
+       if (!pre_save())
+           return false;
+
+
     ajax_request('save', Form.serialize(obj.form), save_callback);
     return false;
 }
@@ -168,6 +176,11 @@ function form_save(obj)
 function form_insert(obj)
 {
     info('');
+
+    if (typeof pre_insert == 'function')
+       if (!pre_insert())
+           return false;
+
     ajax_request('insert', Form.serialize(obj.form), save_callback);
     return false;
 }
@@ -217,6 +230,8 @@ function gridDrillDown(e)
     if (!cell) return;
     var value = cell.innerHTML;
 
+    if (!value.length || value == '&nbsp;') return;
+
     if (document.getElementById('details')) {
        var params = 'source=' + grid.tableId.substr(5) + '&id=' + value;
        ajax_request('details', params, details_callback);
@@ -228,6 +243,13 @@ function gridDrillDown(e)
     }
 }
 
+function gridOnScroll(grid, offset)
+{
+    var max = Math.min(offset+grid.pageSize, grid.buffer.totalRows);
+    var info = document.getElementById('grid_info')
+    info.innerHTML = 'Datensatz ' + (offset+1) + ' - ' + max + ' von ' + grid.buffer.totalRows;
+}
+
 /* Update an existing grid
  *
  * grid is a live grid