mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-18 11:56:01 +02:00
Add virtual printer model selection
Features:
- Configurable printer model for virtual printer emulation
- Supports X1 series (X1C, X1, X1E), P series (P1S, P1P, P2S),
A1 series (A1, A1 Mini), and H2 series (H2D, H2C, H2S)
- Dropdown in Settings > Virtual Printer to select model
- Model affects SSDP discovery and slicer compatibility
- Model change restarts virtual printer services automatically
Backend:
- Added VIRTUAL_PRINTER_MODELS mapping in manager.py
- Added virtual_printer_model setting in database
- New GET /api/v1/settings/virtual-printer/models endpoint
- Updated PUT /api/v1/settings/virtual-printer to accept model
Frontend:
- Added model dropdown to VirtualPrinterSettings component
- Status display shows selected model name
- Model change disabled while virtual printer is running
Tests:
- Added 3 unit tests for model configuration
- Updated frontend test mocks for getModels API
This commit is contained in:
@@ -2450,6 +2450,7 @@ export interface VirtualPrinterStatus {
|
||||
name: string;
|
||||
serial: string;
|
||||
model: string;
|
||||
model_name: string;
|
||||
pending_files: number;
|
||||
}
|
||||
|
||||
@@ -2457,9 +2458,15 @@ export interface VirtualPrinterSettings {
|
||||
enabled: boolean;
|
||||
access_code_set: boolean;
|
||||
mode: 'immediate' | 'queue';
|
||||
model: string;
|
||||
status: VirtualPrinterStatus;
|
||||
}
|
||||
|
||||
export interface VirtualPrinterModels {
|
||||
models: Record<string, string>; // SSDP code -> display name
|
||||
default: string;
|
||||
}
|
||||
|
||||
export interface PendingUpload {
|
||||
id: number;
|
||||
filename: string;
|
||||
@@ -2476,15 +2483,19 @@ export interface PendingUpload {
|
||||
export const virtualPrinterApi = {
|
||||
getSettings: () => request<VirtualPrinterSettings>('/settings/virtual-printer'),
|
||||
|
||||
getModels: () => request<VirtualPrinterModels>('/settings/virtual-printer/models'),
|
||||
|
||||
updateSettings: (data: {
|
||||
enabled?: boolean;
|
||||
access_code?: string;
|
||||
mode?: 'immediate' | 'queue';
|
||||
model?: string;
|
||||
}) => {
|
||||
const params = new URLSearchParams();
|
||||
if (data.enabled !== undefined) params.set('enabled', String(data.enabled));
|
||||
if (data.access_code !== undefined) params.set('access_code', data.access_code);
|
||||
if (data.mode !== undefined) params.set('mode', data.mode);
|
||||
if (data.model !== undefined) params.set('model', data.model);
|
||||
|
||||
return request<VirtualPrinterSettings>(`/settings/virtual-printer?${params.toString()}`, {
|
||||
method: 'PUT',
|
||||
|
||||
Reference in New Issue
Block a user