feat: possibilità di ingrandire gli elenchi delle pagine dashbaord, ticket e ticket a mio carico
This commit is contained in:
+59
-3
@@ -74,6 +74,17 @@ seedPhrases();
|
||||
// GET /api/dashboard/stats — Dashboard statistics
|
||||
router.get('/stats', async (req, res) => {
|
||||
const activeAgentId = parseInt(req.headers['x-agent-id'], 10) || 1;
|
||||
|
||||
let previewLimit = 10;
|
||||
try {
|
||||
const row = db.prepare("SELECT preview_limit FROM agent_settings WHERE agent_id = ?").get(activeAgentId);
|
||||
if (row) {
|
||||
previewLimit = row.preview_limit;
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Error reading agent_settings:', err.message);
|
||||
}
|
||||
|
||||
try {
|
||||
// All queries in parallel for speed
|
||||
const [
|
||||
@@ -138,7 +149,7 @@ router.get('/stats', async (req, res) => {
|
||||
JOIN ticket_state_type tst ON ts.type_id = tst.id
|
||||
WHERE tst.name IN ('new', 'open', 'pending reminder', 'pending auto')`
|
||||
),
|
||||
// 10 most recent tickets
|
||||
// Custom most recent tickets based on agent settings
|
||||
pool.query(
|
||||
`SELECT t.id, t.tn, t.title, ts.name AS state_name,
|
||||
tp.name AS priority_name, tp.color AS priority_color,
|
||||
@@ -148,7 +159,8 @@ router.get('/stats', async (req, res) => {
|
||||
JOIN ticket_priority tp ON t.ticket_priority_id = tp.id
|
||||
JOIN queue q ON t.queue_id = q.id
|
||||
ORDER BY t.create_time DESC
|
||||
LIMIT 10`
|
||||
LIMIT $1`,
|
||||
[previewLimit]
|
||||
),
|
||||
// Escalated tickets
|
||||
pool.query(
|
||||
@@ -164,7 +176,7 @@ router.get('/stats', async (req, res) => {
|
||||
JOIN ticket_state_type tst ON ts.type_id = tst.id
|
||||
WHERE tst.name IN ('new', 'open', 'pending reminder', 'pending auto')
|
||||
AND t.user_id = $1`,
|
||||
[activeAgentId]
|
||||
[activeAgentId]
|
||||
),
|
||||
]);
|
||||
|
||||
@@ -178,6 +190,7 @@ router.get('/stats', async (req, res) => {
|
||||
recent_tickets: recentTickets.rows,
|
||||
escalated: parseInt(escalated.rows[0].count),
|
||||
total_my_open: parseInt(myOpenCount.rows[0].count),
|
||||
preview_limit: previewLimit,
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('Error fetching dashboard stats:', err);
|
||||
@@ -206,4 +219,47 @@ router.get('/phrases', (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// GET /api/dashboard/settings — Retrieve settings for the agent
|
||||
router.get('/settings', (req, res) => {
|
||||
const activeAgentId = parseInt(req.headers['x-agent-id'], 10) || 1;
|
||||
try {
|
||||
const row = db.prepare("SELECT preview_limit, tickets_per_page FROM agent_settings WHERE agent_id = ?").get(activeAgentId);
|
||||
if (row) {
|
||||
res.json(row);
|
||||
} else {
|
||||
res.json({ preview_limit: 10, tickets_per_page: 50 });
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Error reading agent settings:', err);
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
// POST /api/dashboard/settings — Save settings for the agent
|
||||
router.post('/settings', (req, res) => {
|
||||
const activeAgentId = parseInt(req.headers['x-agent-id'], 10) || 1;
|
||||
const { preview_limit, tickets_per_page } = req.body;
|
||||
|
||||
try {
|
||||
let currentSettings = { preview_limit: 10, tickets_per_page: 50 };
|
||||
const row = db.prepare("SELECT preview_limit, tickets_per_page FROM agent_settings WHERE agent_id = ?").get(activeAgentId);
|
||||
if (row) {
|
||||
currentSettings = row;
|
||||
}
|
||||
|
||||
const newPreviewLimit = preview_limit !== undefined ? parseInt(preview_limit, 10) : currentSettings.preview_limit;
|
||||
const newTicketsPerPage = tickets_per_page !== undefined ? parseInt(tickets_per_page, 10) : currentSettings.tickets_per_page;
|
||||
|
||||
db.prepare(`
|
||||
INSERT OR REPLACE INTO agent_settings (agent_id, preview_limit, tickets_per_page)
|
||||
VALUES (?, ?, ?)
|
||||
`).run(activeAgentId, newPreviewLimit, newTicketsPerPage);
|
||||
|
||||
res.json({ success: true, preview_limit: newPreviewLimit, tickets_per_page: newTicketsPerPage });
|
||||
} catch (err) {
|
||||
console.error('Error saving agent settings:', err);
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
Reference in New Issue
Block a user