added support to load previous plans, still missing scrollbar functionality in the list so having too many makes them get hidden

merge-notes
isark 2 years ago
parent e5c9c592c3
commit ca0188c87b

@ -95,6 +95,16 @@ fn load_stored_plans() -> Vec<String> {
Storage::enumerate_plans() Storage::enumerate_plans()
} }
#[tauri::command]
fn load_previous(name: String, state: tauri::State<Mutex<Storage>>) -> Option<Plan> {
if let Ok(mut storage) = state.lock() {
let plan = Storage::load_by_name(name);
log::info!("got plan: {plan:?}");
return plan;
}
None
}
#[tauri::command] #[tauri::command]
fn base_plan() -> Plan { fn base_plan() -> Plan {
const BASE_PLAN_STRING: &str = include_str!("../../data/base_plan.json"); const BASE_PLAN_STRING: &str = include_str!("../../data/base_plan.json");
@ -150,7 +160,8 @@ fn main() {
load_plan, load_plan,
load_stored_plans, load_stored_plans,
save_plan, save_plan,
base_plan base_plan,
load_previous
]) ])
.system_tray(system_tray) .system_tray(system_tray)
.on_system_tray_event(|app, event| match event { .on_system_tray_event(|app, event| match event {
@ -180,20 +191,19 @@ fn main() {
} }
fn listen_for_zone_changes(poe_client_log_path: Option<PathBuf>, window: Window) { fn listen_for_zone_changes(poe_client_log_path: Option<PathBuf>, window: Window) {
std::thread::spawn(move || { std::thread::spawn(move || {
// need _watcher // need _watcher
if let Some((enter_area_receiver, _watcher)) = receiver_from_path(&poe_client_log_path) { if let Some((enter_area_receiver, _watcher)) = receiver_from_path(&poe_client_log_path) {
let world_areas: WorldAreasMap = load_world_areas(); let world_areas: WorldAreasMap = load_world_areas();
for area in blocking_area_filtered_rx(&enter_area_receiver) { for area in blocking_area_filtered_rx(&enter_area_receiver) {
if let Some(area) = filter_func(area) {
if let Some(area) = filter_func(area) { if let Some(entered) = world_areas.get(&area) {
if let Some(entered) = world_areas.get(&area) { window.emit_to("Overlay", "entered", &entered.named_id).ok();
window.emit_to("Overlay", "entered", &entered.named_id).ok();
}
} }
} }
} }
}); }
});
} }
fn receiver_from_path(path: &Option<PathBuf>) -> Option<(Receiver<String>, PollWatcher)> { fn receiver_from_path(path: &Option<PathBuf>) -> Option<(Receiver<String>, PollWatcher)> {

@ -117,11 +117,20 @@ impl Storage {
} }
} }
pub fn load_by_name<T: Into<String>>(file: T) -> Option<Plan> {
let file = file.into();
let file = proj_dir()?.data_dir().join(SAVED_PLANS).join(file);
log::info!("Loading plan: {file:?}");
serde_json::from_str(&std::fs::read_to_string(&file).ok()?).ok()
}
pub fn enumerate_plans() -> Vec<String> { pub fn enumerate_plans() -> Vec<String> {
if let Some(proj_dir) = proj_dir() { if let Some(proj_dir) = proj_dir() {
if let Ok(read_dir) = proj_dir.data_dir().join(SAVED_PLANS).read_dir() { if let Ok(read_dir) = proj_dir.data_dir().join(SAVED_PLANS).read_dir() {
return read_dir return read_dir
.filter_map(|entry| Some(entry.ok()?.path().to_str()?.to_string())) .filter_map(|entry| Some(entry.ok()?.path().file_name()?.to_str()?.to_string()))
.collect::<Vec<String>>(); .collect::<Vec<String>>();
} }
} }

@ -37,6 +37,12 @@
<button mat-raised-button (click)="openDialog()">Browse Plans</button> <button mat-raised-button (click)="openDialog()">Browse Plans</button>
<button mat-raised-button (click)="loadBasePlan()">Load base plan</button> <button mat-raised-button (click)="loadBasePlan()">Load base plan</button>
</div> </div>
<div class="enumerated">
<mat-list role="list">
<mat-list-item role="listitem" *ngFor="let plan of planService.planStore"><button (click)="planService.loadPrevious(plan)">{{plan}}</button></mat-list-item>
</mat-list>
</div>
</div> </div>
<settings></settings> <settings></settings>
<button mat-icon-button class="exit" *ngIf="planService.currentPlan" (click)="settingsOpen = false"><span>+</span></button> <button mat-icon-button class="exit" *ngIf="planService.currentPlan" (click)="settingsOpen = false"><span>+</span></button>

@ -124,4 +124,18 @@ notes {
'wght' 400, 'wght' 400,
'GRAD' 0, 'GRAD' 0,
'opsz' 48 'opsz' 48
}
.planChooser {
overflow: hidden;
}
.enumerated {
display: block;
overflow: hidden;
mat-list {
max-height: 100%;
overflow-y: scroll;
}
} }

@ -70,6 +70,8 @@ export class PlanDisplayComponent implements AfterViewInit, OnInit {
} }
} }
}); });
this.planService.getPreviousPlans();
} }
windowInitHandler() { windowInitHandler() {
@ -234,4 +236,8 @@ export class PlanDisplayComponent implements AfterViewInit, OnInit {
this.planService.currentPlan = plan; this.planService.currentPlan = plan;
}) })
} }
enumeratedPlans() {
}
} }

@ -8,9 +8,9 @@ import { NotesComponent } from '../editor/notes/notes.component';
import { AngularResizeEventModule } from 'angular-resize-event'; import { AngularResizeEventModule } from 'angular-resize-event';
import { SettingsComponent } from '../settings/settings.component'; import { SettingsComponent } from '../settings/settings.component';
import { OverlayModule } from '@angular/cdk/overlay'; import { OverlayModule } from '@angular/cdk/overlay';
import {MatIconModule} from '@angular/material/icon'; import { MatIconModule } from '@angular/material/icon';
import { MatButtonModule } from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button';
import { MatListModule } from '@angular/material/list';
@NgModule({ @NgModule({
declarations: [ declarations: [
PlanDisplayComponent PlanDisplayComponent
@ -26,7 +26,8 @@ import { MatButtonModule } from '@angular/material/button';
OverlayModule, OverlayModule,
MatIconModule, MatIconModule,
MatButtonModule, MatButtonModule,
MatIconModule MatIconModule,
MatListModule
], ],
exports: [ exports: [
PlanDisplayComponent PlanDisplayComponent

@ -44,4 +44,8 @@ export class PlanService {
getPreviousPlans() { getPreviousPlans() {
from(invoke<string[]>('load_stored_plans')).subscribe(plans => this.planStore = plans); from(invoke<string[]>('load_stored_plans')).subscribe(plans => this.planStore = plans);
} }
loadPrevious(name: string) {
from(invoke<Plan>('load_previous', {name})).subscribe(plan => this.currentPlan = plan);
}
} }

Loading…
Cancel
Save