You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.8 KiB
PHP
123 lines
3.8 KiB
PHP
<?
|
|
include_once("../php/include.php");
|
|
|
|
function printGroup($id, $name, $expense, $exclude, $system, $existing) {
|
|
?>
|
|
<tr class="list-b">
|
|
<td class="list-b">
|
|
→
|
|
<input id="gname<?=$id?>" type="text" placeholder="Group name" value="<?=$name?>" autocomplete="off" />
|
|
</td>
|
|
<td class="list-b <?=($system ? "disabled" : "")?>">
|
|
<input id="expense<?=$id?>" type="checkbox" <?=($expense ? "checked" : "")?> <?=($system ? "disabled readonly" : "")?> autocomplete="off" /><?=insertExpenseText(1, true)?>
|
|
</td>
|
|
<td class="list-b">
|
|
<input id="exclude<?=$id?>" type="checkbox" <?=($exclude ? "checked" : "")?> autocomplete="off" />Exclude
|
|
</td>
|
|
<td class="list-b disabled">
|
|
<input id="system<?=$id?>" type="checkbox" <?=($system ? "checked" : "")?> disabled readonly autocomplete="off" />Default
|
|
</td>
|
|
<td class="list-b">
|
|
<button onclick="saveGroup(this, <?=$id?>)"><?=($existing ? "Save group" : "Add group")?></button>
|
|
</td>
|
|
<td class="list-b">
|
|
<? if($existing && !$system) { ?>
|
|
<button onclick="deleteGroup(this, <?=$id?>);">Delete group</button>
|
|
<? } ?>
|
|
</td>
|
|
</tr>
|
|
<?
|
|
}
|
|
|
|
function printCategory($id, $categoryGroupId, $name, $system, $records, $rules, $existing) {
|
|
?>
|
|
<tr class="list-b">
|
|
<td class="list-b" colspan="4" style="padding-left: 40px;">
|
|
⤷
|
|
<input id="cname<?=$categoryGroupId?>_<?=$id?>" type="text" placeholder="Category name" value="<?=$name?>" autocomplete="off" />
|
|
<? if($records !== null) { ?>
|
|
<?=$records?> records,
|
|
<?=$rules?> rules
|
|
<? } ?>
|
|
</td>
|
|
<td class="list-b">
|
|
<button onclick="saveCategory(this, <?=$id?>, <?=$categoryGroupId?>);"><?=($existing ? "Save category" : "Add category")?></button>
|
|
</td>
|
|
<td class="list-b">
|
|
<? if($existing && !$system) { ?>
|
|
<button onclick="deleteCategory(this, <?=$id?>);">Delete category</button>
|
|
<? } ?>
|
|
</td>
|
|
</tr>
|
|
<?
|
|
}
|
|
?>
|
|
|
|
<table class="list-b">
|
|
<?
|
|
initDatabaseConnection();
|
|
$groups = dbQuery("SELECT * FROM category_group WHERE household_id = ? ORDER BY name", getHouseholdId());
|
|
foreach($groups as $group) {
|
|
printGroup($group['id'], $group['name'], $group['expense'], $group['exclude'], $group['system'], true);
|
|
|
|
$categories = dbQuery("SELECT * FROM category_ext WHERE category_group_id = ?", $group['id']);
|
|
foreach($categories as $category) {
|
|
printCategory($category['id'], $group['id'], $category['name'], $group['system'], $category['record_count'], $category['rule_count'], true);
|
|
}
|
|
if(!$group['system']) {
|
|
printCategory("null", $group['id'], "", false, null, null, false);
|
|
}
|
|
}
|
|
printGroup("null", "", 1, 0, 0, false);
|
|
closeDatabaseConnection();
|
|
?>
|
|
</table>
|
|
|
|
<script>
|
|
function saveGroup(button, id) {
|
|
var requestData = {
|
|
action: "save-group",
|
|
id: id,
|
|
name: $('#gname' + id).val(),
|
|
expense: $('#expense' + id).is(':checked'),
|
|
exclude: $('#exclude' + id).is(':checked')
|
|
};
|
|
sendCategoryRequest(requestData, button, id == null);
|
|
}
|
|
|
|
function deleteGroup(button, id) {
|
|
var requestData = {
|
|
action: "delete-group",
|
|
id: id
|
|
};
|
|
sendCategoryRequest(requestData, button, true);
|
|
}
|
|
|
|
function saveCategory(button, id, categoryGroupId) {
|
|
var requestData = {
|
|
action: "save-category",
|
|
id: id,
|
|
categoryGroupId: categoryGroupId,
|
|
name: $('#cname' + categoryGroupId + "_" + id).val()
|
|
};
|
|
sendCategoryRequest(requestData, button, id == null);
|
|
}
|
|
|
|
function deleteCategory(button, id) {
|
|
var requestData = {
|
|
action: "delete-category",
|
|
id: id
|
|
};
|
|
sendCategoryRequest(requestData, button, true);
|
|
}
|
|
|
|
function sendCategoryRequest(requestData, button, reload) {
|
|
var completeFunc = function(success, status, response) {
|
|
if(success && reload) {
|
|
reloadCurrentPage();
|
|
}
|
|
};
|
|
sendRequest("category", requestData, button, completeFunc);
|
|
}
|
|
</script>
|