- New EntryApiController (app/Controllers/Api/EntryApiController.php)
- Centralized API for entry operations (daily/monthly data retrieval and saving)
- getControls() - Fetch controls with optional date-based expiry filtering
- getTests() - Get tests associated with a control
- getDailyData() - Retrieve daily results for a date/control
- getMonthlyData() - Retrieve monthly results with per-day data and comments
- saveDaily() - Batch save daily results with validation
- saveMonthly() - Batch save monthly results with statistics
- New Monthly Entry View (app/Views/entry/monthly.php)
- Calendar grid interface for entering monthly QC results
- Month selector with quick navigation (prev/next/current)
- Test selector to filter controls
- 31-day grid per control with inline editing
- Visual QC range indicators (green for in-range, red for out-of-range)
- Weekend highlighting
- Per-control monthly comment field
- Keyboard shortcut (Ctrl+S) for saving
- Change tracking with pending save indicator
- Route Updates (app/Config/Routes.php)
- Added /entry/monthly page route
- Added /api/entry/daily GET endpoint
- Model Updates
- ResultsModel: Added updateMonthly() for upserting monthly results
- ResultCommentsModel: Added upsertMonthly() for monthly comments
46 lines
861 B
PHP
46 lines
861 B
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use CodeIgniter\API\ResponseTrait;
|
|
|
|
class PageController extends BaseController {
|
|
use ResponseTrait;
|
|
|
|
public function dashboard() {
|
|
return view('dashboard');
|
|
}
|
|
|
|
public function masterDept() {
|
|
return view('master/dept/index');
|
|
}
|
|
|
|
public function masterTest() {
|
|
return view('master/test/index');
|
|
}
|
|
|
|
public function masterControl() {
|
|
return view('master/control/index');
|
|
}
|
|
|
|
public function entry() {
|
|
return view('entry/index');
|
|
}
|
|
|
|
public function entryDaily() {
|
|
return view('entry/daily');
|
|
}
|
|
|
|
public function entryMonthly() {
|
|
return view('entry/monthly');
|
|
}
|
|
|
|
public function report() {
|
|
return view('report/index');
|
|
}
|
|
|
|
public function reportView() {
|
|
return view('report/view');
|
|
}
|
|
}
|