implementovane ulozenie do backend presuvanie reportov v dashboad

This commit is contained in:
Igor Miňo 2025-05-04 16:32:33 +02:00
parent c82df663df
commit eab71c2c4d
4 changed files with 120 additions and 17 deletions

18
api.php
View File

@ -16,10 +16,14 @@ switch ($action) {
$result = array('report_id' => $report_id); $result = array('report_id' => $report_id);
break; break;
case 'update': case 'update':
$result = reportUpdate($_REQUEST['report_id'], $_REQUEST['title'], $_REQUEST['description'], $_REQUEST['status'], $_REQUEST['group'], $_REQUEST['priority']); $suc = reportUpdate($_REQUEST['report_id'], $_REQUEST['title'], $_REQUEST['description'], $_REQUEST['status'], $_REQUEST['group'], $_REQUEST['priority']);
if ($suc === false) $error = 'Update failed';
$result = array('processed' => $suc);
break; break;
case 'delete': case 'delete':
$result = reportDelete($_REQUEST['report_id']); $suc = reportDelete($_REQUEST['report_id']);
if ($suc === false) $error = 'Update failed';
$result = array('processed' => $suc);
break; break;
case 'get': case 'get':
$result = reportGet($_REQUEST['report_id']); $result = reportGet($_REQUEST['report_id']);
@ -30,6 +34,16 @@ switch ($action) {
case 'getallgrouped': case 'getallgrouped':
$result = reportGetAllGrouped($_REQUEST['status']); $result = reportGetAllGrouped($_REQUEST['status']);
break; break;
case 'updateordnum':
$suc = reportUpdateOrdnum($_REQUEST['ordnums']);
if ($suc === false) $error = 'Update Ordnum failed';
$result = array('processed' => $suc);
break;
case 'updatestatus':
$suc = reportUpdateStatus($_REQUEST['report_id'], $_REQUEST['status']);
if ($suc === false) $error = 'Update Status failed';
$result = array('processed' => $suc);
break;
} }
header('Content-Type: application/json'); header('Content-Type: application/json');

View File

@ -91,6 +91,11 @@ function dbCheck() {
option('version', '2'); option('version', '2');
$db_version = '2'; $db_version = '2';
} }
if ($db_version === '2') {
$db->query("ALTER TABLE reports ADD COLUMN ordnum INTEGER DEFAULT 0");
option('version', '3');
$db_version = '3';
}
} }
function option($key, $value = null) function option($key, $value = null)
@ -148,7 +153,7 @@ function reportAdd($title, $description, $status = 0, $group = null, $priority =
function reportUpdate($report_id, $title, $description, $status = 0, $group = null, $priority = 0) { function reportUpdate($report_id, $title, $description, $status = 0, $group = null, $priority = 0) {
global $db; global $db;
return $db->update('reports', [ $stm = $db->update('reports', [
'report_title' => $title, 'report_title' => $title,
'report_description' => $description, 'report_description' => $description,
'report_status' => $status, 'report_status' => $status,
@ -157,13 +162,40 @@ function reportUpdate($report_id, $title, $description, $status = 0, $group = nu
], [ ], [
'report_id' => $report_id 'report_id' => $report_id
]); ]);
return ($stm->rowCount() > 0);
}
function reportUpdateStatus($report_id, $status) {
global $db;
$stm = $db->update('reports', [
'report_status' => $status
], [
'report_id' => $report_id
]);
return ($stm->rowCount() > 0);
}
function reportUpdateOrdnum($ordnums) {
global $db;
$ordnums = json_decode($ordnums, true);
$suc = true;
foreach ($ordnums as $report_id => $ordnum) {
$stm = $db->update('reports', [
'ordnum' => $ordnum
], [
'report_id' => $report_id
]);
$suc &= ($stm->rowCount() > 0);
}
return $suc;
} }
function reportDelete($report_id) { function reportDelete($report_id) {
global $db; global $db;
return $db->delete('reports', [ $stm = $db->delete('reports', [
'report_id' => $report_id 'report_id' => $report_id
]); ]);
return ($stm->rowCount() > 0);
} }
function reportGet($report_id) { function reportGet($report_id) {
@ -175,14 +207,14 @@ function reportGet($report_id) {
function reportGetAll($status = null) { function reportGetAll($status = null) {
global $db; global $db;
if ($status === null) $status = array(0, 1, 2, 3);
return $db->select('reports', '*', [ return $db->select('reports', '*', [
'ORDER' => 'report_priority', 'ORDER' => ['report_priority', 'ordnum'],
'report_status' => $status 'report_status' => $status
]); ]);
} }
function reportGetAllGrouped($status = null) { function reportGetAllGrouped($status = null) {
if ($status === null) $status = array(0, 1, 2, 3);
$all = reportGetAll($status); $all = reportGetAll($status);
$groups = []; $groups = [];
foreach ($all as $report) { foreach ($all as $report) {

View File

@ -20,7 +20,9 @@ export const backend = {
} }
var form_data = new FormData(); var form_data = new FormData();
Object.keys(data).forEach(key => { Object.keys(data).forEach(key => {
form_data.append(key, data[key]); let val = data[key];
if (typeof val == 'object') val = JSON.stringify(val);
form_data.append(key, val);
}); });
xhttp.open('POST', this.endpont + '?action=' + method); xhttp.open('POST', this.endpont + '?action=' + method);
//xhttp.setRequestHeader('content-type', 'application/x-www-form-urlencoded'); //xhttp.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
@ -53,7 +55,7 @@ export const backend = {
update(id, title, description, status, group, priority) { update(id, title, description, status, group, priority) {
return this.callPromise('update', { return this.callPromise('update', {
id: id, report_id: id,
title: title, title: title,
description: description, description: description,
status: status, status: status,
@ -62,11 +64,11 @@ export const backend = {
}, },
delete(id) { delete(id) {
return this.callPromise('delete', {id: id}); return this.callPromise('delete', {report_id: id});
}, },
get(id) { get(id) {
return this.callPromise('get', {id: id}); return this.callPromise('get', {report_id: id});
}, },
getAll() { getAll() {
@ -77,4 +79,12 @@ export const backend = {
return this.callPromise('getallgrouped', {}); return this.callPromise('getallgrouped', {});
}, },
updateOrdnum(ordnums) {
return this.callPromise('updateordnum', {ordnums: ordnums});
},
updateStatus(id, status) {
return this.callPromise('updatestatus', {report_id: id, status: status});
},
}; };

View File

@ -149,21 +149,68 @@ export default {
this.itemsWaiting = all_grouped[1]; this.itemsWaiting = all_grouped[1];
this.itemsInProgress = all_grouped[2]; this.itemsInProgress = all_grouped[2];
this.itemsDone = all_grouped[3]; this.itemsDone = all_grouped[3];
}) });
},
getDataByStatus(report_status) {
let for_reorder = null;
switch (report_status) {
case 0:
for_reorder = this.itemsUncategorized;
break;
case 1:
for_reorder = this.itemsWaiting;
break;
case 2:
for_reorder = this.itemsInProgress;
break;
case 3:
for_reorder = this.itemsDone;
break;
}
return for_reorder;
},
searchStatusByReportId(report_id) {
for (let i = 0; i < this.itemsUncategorized.length; i++) {
if (this.itemsUncategorized[i].report_id === report_id) return 0;
}
for (let i = 0; i < this.itemsWaiting.length; i++) {
if (this.itemsWaiting[i].report_id === report_id) return 1;
}
for (let i = 0; i < this.itemsInProgress.length; i++) {
if (this.itemsInProgress[i].report_id === report_id) return 2;
}
for (let i = 0; i < this.itemsDone.length; i++) {
if (this.itemsDone[i].report_id === report_id) return 3;
}
}, },
onDragChange(event) { onDragChange(event) {
// console.log("Presunuté:", event); // console.log("onDragChange", event);
// Napr. uložiť poradie do API
if (event.added) { if (event.added) {
console.log("Pridané:", event.added.element); // console.log("Pridané:", event.added.element);
let report_id = event.added.element.report_id;
let new_reprort_status = this.searchStatusByReportId(report_id);
let for_reorder = this.getDataByStatus(new_reprort_status);
backend.updateStatus(report_id, new_reprort_status).then(() => {
this.updateOrdnum(for_reorder);
});
} }
if (event.moved) { if (event.moved) {
console.log("Presunuté:", event.moved.element); // console.log("Presunuté:", event.moved.element);
let report_status = event.moved.element.report_status;
let for_reorder = this.getDataByStatus(report_status);
this.updateOrdnum(for_reorder);
} }
if (event.removed) { if (event.removed) {
console.log("Odstranené:", event.removed.element); // console.log("Odstranené:", event.removed.element);
} }
}, },
updateOrdnum(for_reorder) {
let new_ordnums = {};
for (let i = 0; i < for_reorder.length; i++) {
new_ordnums[for_reorder[i].report_id] = i;
}
backend.updateOrdnum(new_ordnums);
},
vypisData() { vypisData() {
console.log(this.itemsUncategorized); console.log(this.itemsUncategorized);
console.log(this.itemsWaiting); console.log(this.itemsWaiting);