Move list table to class / new AJAX framework
[infodrom.org/service.infodrom.org] / src / InfoCon / account / list.wml
index f0fc1e8..3db6613 100644 (file)
@@ -5,99 +5,13 @@
 <?php
 function filter_account()
 {
-  global $db;
-  $out = '';
-  $table = "account";
-  $value = "value_eur";
-  $add = '';
-  if ((strlen ($_POST['currency']) > 0) && ($_POST['currency'] == "dm")) {
-    $table = "account_dm";
-    $value = "value_dm";
-    $add = "&cur=dm";
-  }
-
-  $where[] = sprintf("blz_kto = '%s'", $_POST['blzkto']);
-  if (strlen($_POST['year'])) {
-    $where[] = sprintf ("datum >= '%04d-01-01'", $_POST['year']);
-    $year++;
-    $where[] = sprintf ("datum < '%04d-01-01'", $_POST['year']+1);
-  }
-
-  if (strlen($_POST[deadline]) && strlen(trim($_POST['deadline']))) {
-    $date = form_to_yyyymmdd ($_POST['deadline']);
-    $where[] = sprintf ("datum < '%s'", $date);
-  }
-
-  if (strlen($_POST['statement']) && strlen(trim($_POST['statement']))) {
-    $where[] = sprintf("statement = '%s'", $_POST['statement']);
-  }
-
-  if (strlen($_POST['category']) && strlen(trim($_POST['category']))) {
-    $where[] = sprintf("category = '%s'", $_POST['category']);
-  }
-
-  if (strlen($_POST['keyword']) && strlen(trim($_POST['keyword']))) {
-    $where[] = sprintf("descr ~* '%s'", $_POST['keyword']);
-  }
-
-  if (strlen($_POST['from_to']) && strlen(trim($_POST['from_to']))) {
-    $where[] = sprintf("from_to = '%s'", $_POST['from_to']);
-  }
-
-  if ($_POST['input'] && !$_POST['output']) {
-    $where[] = "$value > 0.0";
-  } elseif ($_POST['output'] && !$_POST['input']) {
-    $where[] = "$value < 0.0";
-  }
-
-  $query = "SELECT datum,id,category,descr,$value FROM $table WHERE "
-        . implode ($where, " AND ")
-        . " ORDER BY datum,id";
-
-  $sum = 0.0;
-  $sum_in = 0.0;
-  $sum_out = 0.0;
-  $color = 0;
-  foreach ($db->fetchAssocList($query) as $row) {
-    $descr = explode ("
-", $row['descr']);
-    $date = explode (" ", $row['datum']);
-    $date = explode ("-", $date[0]);
-    $date = sprintf ("%d.%d.%d", $date[2], $date[1], $date[0]);
-
-    $out .= sprintf ("<tr class=\"t%d\">", $color);
-    $out .= sprintf ("<td width=\"10%%\" align=\"right\">%s</td>", $date);
-    $out .= sprintf ("<td width=\"10%%\" align=\"center\">%s</td>", $row['category']);
-    $out .= sprintf ("<td width=\"70%%\"><a href=\"edit.php?id=%d%s\">%s</a></td>",
-           $row['id'], $add, $descr[0]);
-    $out .= sprintf ("<td width=\"10%%\" align=\"right\" class=\"%s\">%5.2f</td>",
-      $row[$value]>0?"in":"out", $row[$value]);
-    $sum += $row[$value];
-    if ($row[$value] > 0) {
-      $sum_in += $row[$value];
+    if ((strlen($_POST['currency']) > 0) && ($_POST['currency'] == "dm")) {
+       $account = new AccountingDM();
     } else {
-      $sum_out += $row[$value];
+       $account = new Accounting();
     }
-    $out .= "</tr>";
-    $color = !$color;
-  }
-  if (strlen($statement)) {
-    $out .= sprintf ("<tr class=\"t%d\">", $color);
-    $out .= "<td width=\"90%\" colspan=\"3\"><strong>Summe Einnahmen</strong></td>";
-    $out .= sprintf ("<td width=\"10%%\" align=\"right\" class=\"in\">%5.2f</td>",$sum_in);
-    $out .= "</tr>";
-    $out .= sprintf ("<tr class=\"t%d\">", $color);
-    $out .= "<td width=\"90%\" colspan=\"3\"><strong>Summe Ausgaben</strong></td>";
-    $out .= sprintf ("<td width=\"10%%\" align=\"right\" class=\"out\">%5.2f</td>", $sum_out*-1);
-    $out .= "</tr>";
-  }
-  $out .= sprintf ("<tr class=\"t%d\">", $color);
-  $out .= "<td width=\"90%\" colspan=\"3\" align=\"left\"><strong>Summe</strong></td>";
-  $out .= sprintf ("<td width=\"10%%\" align=\"right\" class=\"%s\"><strong>%5.2f</strong></td>",
-    $sum>0?"in":"out", $sum);
-  $out .= "</tr>";
-
-  return $out;
+
+    return $account->filterTable($_POST);
 }
 
 if (!empty($_POST['ajax']) && $_POST['ajax'] == 1) {
@@ -129,7 +43,7 @@ div#filter_title {
     font-weight: bold;
 }
 </style>
-<table class="border smallfont" width=100% border=0 cellpadding=0 cellspacing=1>
+<table class="border smallfont yellow-hover" width=100% border=0 cellpadding=0 cellspacing=1>
 <thead>
 <tr class=head>
   <th width=10%>Datum</th>
@@ -154,8 +68,29 @@ $(function(){
     });
     $('body').append('<script type="text/javascript" src="../../jquery.udraggable.js"><\/script>');
     $('body').append('<script type="text/javascript" src="../../jquery.event.ue.js"><\/script>');
+    $('body').append('<script type="text/javascript" src="../../jquery.editable.js"><\/script>');
 });
 
+//+ Jonas Raoni Soares Silva
+//@ http://jsfromhell.com/geral/utf-8 [rev. #1]
+
+UTF8 = {
+        encode: function(s){
+                for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i < l;
+                        s[i] = (c = s[i].charCodeAt(0)) >= 127 ? o(0xc0 | (c >>> 6)) + o(0x80 | (c & 0x3f)) : s[i]
+                );
+                return s.join("");
+        },
+        decode: function(s){
+                for(var a, b, i = -1, l = (s = s.split("")).length, o = String.fromCharCode, c = "charCodeAt"; ++i < l;
+                        ((a = s[i][c](0)) & 0x80) &&
+                        (s[i] = (a & 0xfc) == 0xc0 && ((b = s[i + 1][c](0)) & 0xc0) == 0x80 ?
+                        o(((a & 0x03) << 6) + (b & 0x3f)) : o(128), s[++i] = "")
+                );
+                return s.join("");
+        }
+};
+
 function filter_popup()
 {
     if (!$('#filter_popup form input').length) {
@@ -175,12 +110,23 @@ function filter_popup()
                      'handle': 'div#filter_title'
                  }).css('top', '70px').css('left', '103px');
 
+                 $('#filter_popup form input,#filter_popup form select').not('input.button').change(function(e){
+                     $.invoke('Accounting/Filter',
+                              $('#filter_popup form').serialize(),
+                            function(data){
+                                $('table.border tbody').html(data.table);
+                                make_editable('table.smallfont tr span');
+                            });
+                     return false;
+                 });
+
                  $('#filter_popup form input.button[type="submit"]').click(function(e){
-                     $.post('list.php',
-                            'ajax=1&'+$('#filter_popup form').serialize(),
+                     $.invoke('Accounting/Filter',
+                              $('#filter_popup form').serialize(),
                             function(data){
-                                $('table.border tbody').html(data);
+                                $('table.border tbody').html(data.table);
                                 $('#filter_popup').hide();
+                                make_editable('table.smallfont tr span');
                             });
                      return false;
                  });