Hide hour sum per default
[misc/kostenrechnung] / lib / functions.js
index 2de1400..6bedb1e 100644 (file)
@@ -115,27 +115,60 @@ 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)
+{
+    var obj = document.getElementById(id);
+    if (!obj) return;
+
+    if (typeof empty == 'undefined') empty = 0;
+
+    obj.options.length = empty;
+
+    for (var i=0; i < options.length; i++)
+      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); }
+
 function save_callback(data)
 {
     info('Datensatz gespeichert');
-    grid_update(grid);
+
+    if (typeof post_save == 'function')
+       post_save();
 }
 
 function delete_callback(data)
 {
     info('Datensatz gelöscht');
-    grid_update(grid);
+
+    if (typeof post_delete == 'function')
+       post_delete();
 }
 
 function form_save(obj)
 {
+    var id = document.getElementById('edit_id');
+
+    if (!id.value.length)
+       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;
 }
@@ -143,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;
 }
@@ -150,6 +188,9 @@ function form_insert(obj)
 function form_delete(obj)
 {
     var id = document.getElementById('edit_id');
+
+    if (!id.value.length) return false;
+
     var source = document.getElementById('edit_source');
     info('');
     var params = 'id='+id.value + '&source='+source.value;
@@ -189,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);
@@ -200,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
@@ -231,6 +281,9 @@ function grid_update_filters(grid)
        var fmt = grid.columns[c].format;
        if (typeof fmt.filterUI != 'string') continue;
        if (fmt.filterUI != 's') continue;
+
+       if (grid.columns[c]._getdesc) continue;
+
        $(grid.filterId(c)).options.length = 1;
 
        var options = {};