Display information about time of last edit
[misc/kostenrechnung] / lib / functions.js
index 64bc2db..72141c2 100644 (file)
@@ -7,8 +7,8 @@ function ajax_request_callback(req)
        var data = json_parse(req.responseText);
 
        if (typeof data.error == 'string') {
-           alert("Error in AJAX backend:\n" + data.error);
            error('Fehler im AJAX-Backend');
+           alert("Error in AJAX backend:\n" + data.error);
        } else if (req.oncomplete)
            req.oncomplete(data);
     }
@@ -72,8 +72,39 @@ function set_value(id, value)
 /*
  * Form functions
  */
+function save_callback(data)
+{
+    info('Datensatz gespeichert');
+    grid_update(grid);
+}
+
+function delete_callback(data)
+{
+    info('Datensatz gelöscht');
+    grid_update(grid);
+}
+
 function form_save(obj)
 {
+    info('');
+    ajax_request('save', Form.serialize(obj.form), save_callback);
+    return false;
+}
+
+function form_insert(obj)
+{
+    info('');
+    ajax_request('insert', Form.serialize(obj.form), save_callback);
+    return false;
+}
+
+function form_delete(obj)
+{
+    var id = document.getElementById('edit_id');
+    var source = document.getElementById('edit_source');
+    info('');
+    var params = 'id='+id.value + '&source='+source.value;
+    ajax_request('delete', params, delete_callback);
     return false;
 }
 
@@ -90,6 +121,9 @@ function fetch_callback(data)
 {
     for (var id in data)
        set_value('edit_'+id, data[id]);
+
+    var status = document.getElementById('form_status');
+    status.innerHTML = 'Geändert: ' + data.sys_edit + ' von ' + data.sys_user;
 }
 
 /*
@@ -116,3 +150,28 @@ function gridDrillDown(e)
        ajax_request('fetch', params, fetch_callback);
     }
 }
+
+/* Update an existing grid
+ *
+ * grid is a live grid
+ * filter is the array index of the $table_filters array in mskdef
+ * value is the value applied to the filter
+ */
+function grid_update(grid, filter, value)
+{
+    if (grid === undefined)
+       return;
+
+    if (filter !== undefined && filter !== false)
+               grid.buffer.options.requestParameters = ['w'+filter+'=' + value];
+    grid.buffer.clear();
+    grid.buffer.setTotalRows(0);
+    grid.buffer.foundRowCount = false;
+    grid.cancelMenu();
+    grid.ClearSelection();
+    grid.setImages();
+    if (grid.bookmark) grid.bookmark.innerHTML=" ";
+    grid.clearRows();
+    grid.buffer.fetch(-1);
+}
+