Skip to content

Commit f64ea81

Browse files
Fixing a bug on the correlation between triggers and craving on the recovery dashboard
1 parent 0bed7b1 commit f64ea81

5 files changed

Lines changed: 39 additions & 24 deletions

File tree

src-tauri/src/android.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@ pub fn save_backup_file(backup_str: String) -> Return {
1414
let path = "/storage/emulated/0/Android/data/com.addictiontracker/files/backup.txt";
1515
// tries to save data to a file
1616
match std::fs::write(path, backup_str) {
17-
Ok(_) => {
18-
println!("Sucesso escrevendo no arquivo");
17+
Ok(_) => {
18+
println!("Sucesso escrevendo no arquivo");
1919
return Return {
2020
path: path.to_string(),
2121
msg: "Salvo com sucesso!".to_string(),
2222
result: true,
23-
}
24-
},
25-
Err(e) => {
23+
};
24+
}
25+
Err(e) => {
2626
println!("Erro: {}", e);
2727
return Return {
2828
path: path.to_string(),
2929
msg: format!("Erro: {}", e),
30-
result: false
30+
result: false,
3131
};
3232
}
3333
}
34-
}
34+
}

src-tauri/src/desktop.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1-
use tauri::{App, AppHandle, WindowEvent, Manager};
21
use tauri::menu::{MenuBuilder, MenuItem};
32
use tauri::tray::{MouseButton, TrayIconBuilder, TrayIconEvent};
3+
use tauri::{App, AppHandle, Manager, WindowEvent};
44

55
#[cfg(desktop)]
66
pub fn setup_system_tray_icon(app: &mut App) {
77
// hiddens the main window before the app loads
88
app.get_webview_window("main").unwrap().hide().unwrap();
9-
app.get_webview_window("splashscreen").unwrap().show().unwrap();
9+
app.get_webview_window("splashscreen")
10+
.unwrap()
11+
.show()
12+
.unwrap();
1013

1114
let item_show = MenuItem::new(app, "Show/Hide", true, Some("E")).unwrap();
1215
let item_quit = MenuItem::new(app, "Quit", true, Some("R")).unwrap();

src/app/pages/recovery-dashboard/recovery-dashboard.component.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { TranslocoAvailableLangs } from "../../app.config";
2020
import { getDateForChart } from "../../util/date.utils";
2121
import { SelectModule } from "primeng/select";
2222
import { SubstanceSelectorComponent } from "../../components/substance/substance-selector.component";
23+
import { TriggerDto } from "../../dto/trigger.dto";
2324

2425
@Component({
2526
selector: "app-recovery-dashboard",
@@ -346,9 +347,9 @@ export class RecoveryDashboardComponent implements OnInit {
346347
* Returns array: [{ trigger: string, avgCraving: number, count: number }]
347348
*/
348349
async prepareTriggerCravingCorrelationDataAsync() {
349-
const labels = await this.triggerService.getTriggerLabels();
350+
const labels = await this.triggerService.getActiveTriggers();
350351
const data = this.usageService.getTriggerCravingCorrelation(
351-
this.getFilteredUsageHistory(),
352+
this.getFilteredUsageHistory() as (UsageDto & {trigger: TriggerDto[]})[],
352353
labels
353354
).sort((a, b) => b.avgCraving > a.avgCraving ? 1 : -1);
354355

src/app/services/trigger.service.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,22 @@ export class TriggerService extends ServiceAbstract<Triggers> {
4141
* In a real app, this could fetch from DB or config.
4242
*/
4343
async getTriggerLabels(): Promise<string[]> {
44-
return this.list().then(triggers => triggers.map(trigger => this.translateService.translate(trigger.name)));
44+
return this.getActiveTriggers().then(triggers => triggers.map(trigger => this.translateService.translate(trigger.name)));
4545
}
4646

4747
/**
4848
* Gets all active (non-archived) triggers.
4949
*/
5050
getActiveTriggers(): Promise<TriggerDto[]> {
5151
return this.table.toArray().then((triggers) => {
52-
return triggers.filter((trigger: any) => !trigger.archived || trigger.archived === undefined || trigger.archived === null || trigger.archived === 0) as TriggerDto[];
52+
return triggers
53+
.filter(
54+
(trigger: any) =>
55+
!trigger.archived || trigger.archived === undefined || trigger.archived === null || trigger.archived === 0
56+
).map(trigger => ({
57+
...trigger,
58+
name: this.translateService.translate(trigger.name)
59+
})) as TriggerDto[];
5360
});
5461
}
5562

src/app/services/usage.service.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import { Injectable, inject } from '@angular/core';
2-
import { ServiceAbstract } from './service.abstract';
2+
import { TranslocoService } from '@jsverse/transloco';
33
import { DateTime } from 'luxon';
4+
import { ServiceAbstract } from './service.abstract';
45
import { UsageAddDto, UsageDto } from '../dto/usage.dto';
56
import { DbService } from './db.service';
67
import { DatabaseChangeType } from 'dexie-observable/api';
78
import { Changes, DataUpdatedService } from './data-updated.service';
89
import { CostAddDto } from '../dto/cost.dto';
910
import { SubstanceService } from './substance.service';
11+
import { TriggerDto } from '../dto/trigger.dto';
1012

1113
export const DATE_FORMAT = 'yyyy-mm-dd HH:MM:ss';
1214

@@ -39,6 +41,7 @@ export class UsageService extends ServiceAbstract<Usages> {
3941
protected override dbService = inject(DbService);
4042
protected override dataUpdatedService = inject(DataUpdatedService);
4143
private substanceService = inject(SubstanceService);
44+
private translateService = inject(TranslocoService);
4245

4346
protected override storeName = 'usage' as const;
4447

@@ -294,27 +297,28 @@ export class UsageService extends ServiceAbstract<Usages> {
294297
* @returns Array of { trigger, avgCraving, count }
295298
*/
296299
getTriggerCravingCorrelation(
297-
usageHistory: UsageDto[],
298-
triggerLabels: string[]
300+
usageHistory: (UsageDto & {trigger: TriggerDto[]})[],
301+
//triggerLabels: string[]
302+
triggerLabels: TriggerDto[]
299303
): { trigger: string; avgCraving: number; count: number }[] {
300304
const result: Record<string, { total: number; count: number }> = {};
301-
triggerLabels.forEach(label => {
302-
result[label] = { total: 0, count: 0 };
305+
triggerLabels.forEach(trigger => {
306+
result[trigger.id] = { total: 0, count: 0 };
303307
});
304308
usageHistory.forEach(entry => {
305309
if (Array.isArray(entry.trigger)) {
306310
entry.trigger.forEach(trigger => {
307-
if (trigger && result[trigger.name] !== undefined && typeof entry.craving === "number") {
308-
result[trigger.name].total += entry.craving;
309-
result[trigger.name].count += 1;
311+
if (trigger && result[trigger.id] !== undefined && typeof entry.craving === "number") {
312+
result[trigger.id].total += entry.craving;
313+
result[trigger.id].count += 1;
310314
}
311315
});
312316
}
313317
});
314318
return triggerLabels.map(trigger => ({
315-
trigger,
316-
avgCraving: result[trigger].count > 0 ? result[trigger].total / result[trigger].count : 0,
317-
count: result[trigger].count
319+
trigger: trigger.name,
320+
avgCraving: result[trigger.id].count > 0 ? result[trigger.id].total / result[trigger.id].count : 0,
321+
count: result[trigger.id].count
318322
}));
319323
}
320324
}

0 commit comments

Comments
 (0)