Files
Spectral-Insight-Mission-Plan/src-tauri/src/commands/defaults_commands.rs
xin d732580c3e Initial commit: Happa Mission Plan v0.1.0
Task planning and path generation software for automated data collection
equipment (hyperspectral cameras, DSLR, depth cameras).

- Generate mission plans (JSON) with subtasks per device
- Generate scan path binary files (.RecordLine3)
- Multi-rectangle area planning with reference map support
- Device-specific FOV defaults (Pika L 17.6°, Pika NIR 21.7°, etc.)
- Timeline scheduling with constraint validation
- Tauri 2.x + Vue 3 + Naive UI + Pinia
2026-06-17 17:17:39 +08:00

77 lines
2.2 KiB
Rust

use tauri::command;
use crate::error::AppError;
use crate::models::{MissionScanConfig, PlannerDefaults};
use std::path::PathBuf;
fn defaults_dir() -> PathBuf {
// Save next to the executable
std::env::current_exe()
.unwrap_or_else(|_| PathBuf::from("."))
.parent()
.unwrap_or_else(|| std::path::Path::new("."))
.to_path_buf()
}
#[command]
pub fn save_default_scan_config(config: MissionScanConfig) -> Result<(), AppError> {
let path = defaults_dir().join("scan_defaults.json");
let content = serde_json::to_string_pretty(&config)?;
std::fs::write(path, content)?;
Ok(())
}
#[command]
pub fn load_default_scan_config() -> Result<MissionScanConfig, AppError> {
let path = defaults_dir().join("scan_defaults.json");
if path.exists() {
let content = std::fs::read_to_string(path)?;
let config: MissionScanConfig = serde_json::from_str(&content)?;
Ok(config)
} else {
Ok(MissionScanConfig::default())
}
}
#[command]
pub fn save_default_background(path: String) -> Result<(), AppError> {
let file_path = defaults_dir().join("background_default.txt");
std::fs::write(file_path, &path)?;
Ok(())
}
#[command]
pub fn load_default_background() -> Result<Option<String>, AppError> {
let file_path = defaults_dir().join("background_default.txt");
if file_path.exists() {
let content = std::fs::read_to_string(file_path)?;
let trimmed = content.trim().to_string();
if trimmed.is_empty() {
Ok(None)
} else {
Ok(Some(trimmed))
}
} else {
Ok(None)
}
}
#[command]
pub fn save_planner_defaults(config: PlannerDefaults) -> Result<(), AppError> {
let path = defaults_dir().join("planner_defaults.json");
let content = serde_json::to_string_pretty(&config)?;
std::fs::write(path, content)?;
Ok(())
}
#[command]
pub fn load_planner_defaults() -> Result<PlannerDefaults, AppError> {
let path = defaults_dir().join("planner_defaults.json");
if path.exists() {
let content = std::fs::read_to_string(path)?;
let config: PlannerDefaults = serde_json::from_str(&content)?;
Ok(config)
} else {
Ok(PlannerDefaults::default())
}
}