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()
}
#[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]
fn base_plan() -> Plan {
const BASE_PLAN_STRING: &str = include_str!("../../data/base_plan.json");
@ -150,7 +160,8 @@ fn main() {
load_plan,
load_stored_plans,
save_plan,
base_plan
base_plan,
load_previous
])
.system_tray(system_tray)
.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) {
std::thread::spawn(move || {
// need _watcher
if let Some((enter_area_receiver, _watcher)) = receiver_from_path(&poe_client_log_path) {
let world_areas: WorldAreasMap = load_world_areas();
for area in blocking_area_filtered_rx(&enter_area_receiver) {
if let Some(area) = filter_func(area) {
if let Some(entered) = world_areas.get(&area) {
window.emit_to("Overlay", "entered", &entered.named_id).ok();
}
std::thread::spawn(move || {
// need _watcher
if let Some((enter_area_receiver, _watcher)) = receiver_from_path(&poe_client_log_path) {
let world_areas: WorldAreasMap = load_world_areas();
for area in blocking_area_filtered_rx(&enter_area_receiver) {
if let Some(area) = filter_func(area) {
if let Some(entered) = world_areas.get(&area) {
window.emit_to("Overlay", "entered", &entered.named_id).ok();
}
}
}
});
}
});
}
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> {
if let Some(proj_dir) = proj_dir() {
if let Ok(read_dir) = proj_dir.data_dir().join(SAVED_PLANS).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>>();
}
}

@ -37,6 +37,12 @@
<button mat-raised-button (click)="openDialog()">Browse Plans</button>
<button mat-raised-button (click)="loadBasePlan()">Load base plan</button>
</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>
<settings></settings>
<button mat-icon-button class="exit" *ngIf="planService.currentPlan" (click)="settingsOpen = false"><span>+</span></button>

@ -124,4 +124,18 @@ notes {
'wght' 400,
'GRAD' 0,
'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() {
@ -234,4 +236,8 @@ export class PlanDisplayComponent implements AfterViewInit, OnInit {
this.planService.currentPlan = plan;
})
}
enumeratedPlans() {
}
}

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

@ -44,4 +44,8 @@ export class PlanService {
getPreviousPlans() {
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