Work on web view :

Add Button to show/hide sub operations
	Re order accounts
	Pack operations and their sub operations
This commit is contained in:
www-data 2011-06-02 12:03:02 +02:00
parent 6fae41b4e8
commit 63f2a72a06
5 changed files with 124 additions and 28 deletions

0
www/User.php Normal file → Executable file
View File

63
www/database.php Normal file → Executable file
View File

@ -88,7 +88,7 @@ function LoadUser($name)
$user->id = $row["id"]; $user->id = $row["id"];
$result = $db->query("SELECT * FROM account WHERE user='$user->id' ORDER BY default_account DESC, name ASC"); $result = $db->query("SELECT * FROM account WHERE user='$user->id' ORDER BY default_account DESC, virtual, blocked, name ASC");
$user->accounts = array(); $user->accounts = array();
@ -96,7 +96,7 @@ function LoadUser($name)
array_push($user->accounts, $row); array_push($user->accounts, $row);
// Shared accounts // Shared accounts
$result = $db->query("SELECT * FROM account WHERE id IN (SELECT account FROM shared_account WHERE user='$user->id') ORDER BY name ASC"); $result = $db->query("SELECT * FROM account WHERE id IN (SELECT account FROM shared_account WHERE user='$user->id') ORDER BY name, blocked, virtual ASC");
while ($row = $result->fetchArray()) while ($row = $result->fetchArray())
array_push($user->accounts, $row); array_push($user->accounts, $row);
@ -152,9 +152,19 @@ function GetAccountAmount($id, $month, $year)
return 0; return 0;
} }
function array_insert($array,$pos,$val)
{
$array2 = array_splice($array,$pos);
$array[] = $val;
$array = array_merge($array,$array2);
return $array;
}
function LoadMonth($user, $month, $year) function LoadMonth($user, $month, $year)
{ {
global $db; global $db;
$res = array();
if (!isset($user->accounts[0])) return; if (!isset($user->accounts[0])) return;
@ -170,7 +180,37 @@ function LoadMonth($user, $month, $year)
$req .= " ORDER BY fix_cost DESC, year, month ASC, day "; $req .= " ORDER BY fix_cost DESC, year, month ASC, day ";
$req .= $user->preferences["operation_order"]; $req .= $user->preferences["operation_order"];
return $db->query($req); $result = $db->query($req);
// Pack operations and their sub operations
while ($row = $result->fetchArray())
{
$inserted = 0;
foreach($res as $i => $value)
{
if ($value["parent"] == $row["id"])
{
$res = array_insert($res, $i, $row);
$inserted = 1;
break;
}
if ($row["parent"] == $value["id"])
{
$res = array_insert($res, $i+1, $row);
$inserted = 1;
break;
}
}
// Append
if ($inserted == 0)
{
$res = array_insert($res, $i+1, $row);
}
}
return $res;
} }
function MetaPositiveAmount($id) function MetaPositiveAmount($id)
@ -250,4 +290,21 @@ function GetAllOperations($user, &$last_year, &$last_month)
return $res; return $res;
} }
function GetSubOperations($parent)
{
$res = "[";
global $db;
$req = "SELECT id FROM operation WHERE parent=\"" . $parent . "\"";
$result = $db->query($req);
while ($row = $result->fetchArray())
$res .= $row["id"] . ", ";
if (strlen($res) > 1)
$res = substr($res, 0, strlen($res)-2);
return $res . "]";
}
?> ?>

83
www/index.php Normal file → Executable file
View File

@ -86,16 +86,13 @@ else
$_SESSION["cur_month"] = $_POST["month"]; $_SESSION["cur_month"] = $_POST["month"];
} }
if (isset($_POST["expand"]))
$_SESSION["expand"] = "1";
else
$_SESSION["expand"] = "0";
$operations = LoadMonth($_SESSION["user"], $_SESSION["cur_month"], $_SESSION["cur_year"]); $operations = LoadMonth($_SESSION["user"], $_SESSION["cur_month"], $_SESSION["cur_year"]);
$cur_date = mktime(0, 0, 0, date("m") , date("d"), date("Y")); $cur_date = mktime(0, 0, 0, date("m") , date("d"), date("Y"));
$total_incomes = $total_outcomes = $cur_incomes = $cur_outcomes = 0; $total_incomes = $total_outcomes = $cur_incomes = $cur_outcomes = 0;
$categories = array();
while($operation = $operations->fetchArray()) // Statistics
foreach($operations as $i => $operation)
{ {
if ($operation["meta"] == "1") if ($operation["meta"] == "1")
continue; continue;
@ -151,6 +148,29 @@ function changeMonths()
?> ?>
} }
} }
function toggleOperations(parent, operations)
{
var obj = document.getElementById(operations[0]);
var obj2 = document.getElementById(parent);
var visibility;
if (obj.style.display == "none")
{
obj2.value = "-";
visibility = "table-row";
}
else
{
obj2.value = "+";
visibility = "none";
}
for (var i=0; i<operations.length; i++)
{
obj = document.getElementById(operations[i]);
obj.style.display = visibility;
}
}
</script> </script>
<form id="date" method="POST" action="index.php"> <form id="date" method="POST" action="index.php">
<select name="month" id="date_month"> <select name="month" id="date_month">
@ -175,7 +195,6 @@ function changeMonths()
} }
?> ?>
</select> </select>
<input type="checkbox" name="expand" <?php if ($_SESSION["expand"] == "1") echo "checked";?>>Expand groups</input>
<input type="submit" value="OK"/> <input type="submit" value="OK"/>
</form> </form>
<a id="disconnect" href="?disconnect=1">Disconnect</a> <a id="disconnect" href="?disconnect=1">Disconnect</a>
@ -208,23 +227,13 @@ function changeMonths()
<br /><br /> <br /><br />
<div id="operations"> <div id="operations">
<table> <table>
<tr class="header" bgcolor="#99CCFF"><td>Description</td><td>Date</td><td>Debit</td><td>Credit</td><td>Category</td><td>Account</td></tr> <tr class="header" bgcolor="#99CCFF"><td/><td>Description</td><td>Date</td><td>Debit</td><td>Credit</td><td>Category</td><td>Account</td></tr>
<?php <?php
$prev_week=-1; $prev_week=-1;
$operations = LoadMonth($_SESSION["user"], $_SESSION["cur_month"], $_SESSION["cur_year"]); $operations = LoadMonth($_SESSION["user"], $_SESSION["cur_month"], $_SESSION["cur_year"]);
while($operation = $operations->fetchArray())
{
if ($_SESSION["expand"] == "1")
{
if ($operation["meta"] == "1")
continue;
}
else
{
if ($operation["parent"] != "")
continue;
}
foreach($operations as $i => $operation)
{
$category = $_SESSION["user"]->GetCategory($operation["category"]); $category = $_SESSION["user"]->GetCategory($operation["category"]);
if ($operation["fix_cost"] == "0") if ($operation["fix_cost"] == "0")
{ {
@ -237,7 +246,15 @@ while($operation = $operations->fetchArray())
else else
$tr_class = ""; $tr_class = "";
} }
echo "<tr $tr_class style='" . $category["style"] . "'><td>" . $operation["description"] . "</td>"; if ($operation["meta"] == "1")
echo "<tr $tr_class style='" . $category["style"] . "'><td><input id=\"" . $operation["id"] . "\" type=\"button\" value=\"+\" onClick=\"var ids = " . GetSubOperations($operation["id"]) . " ; toggleOperations(" . $operation["id"] . ", ids);\"/></td><td>" . $operation["description"] . "</td>";
else
{
if ($operation["parent"] == "")
echo "<tr id=\"" . $operation["id"] . "\" $tr_class style='" . $category["style"] . "'><td></td><td>" . $operation["description"] . "</td>";
else
echo "<tr id=\"" . $operation["id"] . "\" $tr_class style='" . $category["style"] . ";display:none'><td></td><td>&nbsp;&nbsp;&nbsp;&nbsp;" . $operation["description"] . "</td>";
}
echo "<td>" . date("d/m/Y", mktime(0, 0, 0, $operation["month"]+1, $operation["day"]+1, $operation["year"])) . "</td>"; echo "<td>" . date("d/m/Y", mktime(0, 0, 0, $operation["month"]+1, $operation["day"]+1, $operation["year"])) . "</td>";
if ($operation["meta"] == "1" && $operation["amount"] == 0) if ($operation["meta"] == "1" && $operation["amount"] == 0)
{ {
@ -252,7 +269,7 @@ while($operation = $operations->fetchArray())
else else
echo "<td /><td align='right'>" . number_format($operation["amount"], 2) . "</td>"; echo "<td /><td align='right'>" . number_format($operation["amount"], 2) . "</td>";
} }
if ($operation["meta"] != "1") if ($operation["meta"] != "1" && $category["id"] > 1)
echo "<td>" . $category["name"] . "</td>"; echo "<td>" . $category["name"] . "</td>";
else else
echo "<td />"; echo "<td />";
@ -282,9 +299,31 @@ while($operation = $operations->fetchArray())
<?php <?php
foreach($_SESSION["user"]->categories as $i => $category) foreach($_SESSION["user"]->categories as $i => $category)
{ {
// Non fix
if ($i == 1)
{
$value = $total_outcomes - $categories[1];
if ($total_outcomes == 0)
$percent = 0;
else
{
$percent = ($value * 100) / $total_outcomes;
$percent = round($percent, 0);
$percent = ($percent < 10) ? "0$percent" : "$percent";
}
echo "<tr class=\"bordered\"><td>Non fix</td><td align=\"right\">" . number_format($value, 2) . " ($percent %)</td></tr>\n";
}
if ($total_outcomes == 0)
$percent = 0;
else
{
$percent = ($categories[$category["id"]] * 100) / $total_outcomes; $percent = ($categories[$category["id"]] * 100) / $total_outcomes;
$percent = round($percent, 0); $percent = round($percent, 0);
$percent = ($percent < 10) ? "0$percent" : "$percent"; $percent = ($percent < 10) ? "0$percent" : "$percent";
}
echo "<tr class=\"bordered\"><td>" . $category["name"]. "</td><td align=\"right\">" . number_format($categories[$category["id"]], 2) . " ($percent %)</td></tr>\n"; echo "<tr class=\"bordered\"><td>" . $category["name"]. "</td><td align=\"right\">" . number_format($categories[$category["id"]], 2) . " ($percent %)</td></tr>\n";
} }
?> ?>

0
www/kisscount.css Normal file → Executable file
View File

0
www/kisscount.php Normal file → Executable file
View File