From 73d472a5961e95f0363f90ec71df1111f6b8e8f9 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 11 Oct 2026 16:15:16 +0200 Subject: [PATCH] Extend import of activities with Ghostfolio AI --- .../import-activities-dialog.component.ts | 2 +- .../import-activities-dialog.html | 72 ++++++++++--------- .../import-activities-dialog.scss | 7 ++ 3 files changed, 45 insertions(+), 36 deletions(-) diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts index acbf5be3b1..5449abe404 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -125,7 +125,7 @@ export class GfImportActivitiesDialogComponent { protected details: any[] = []; protected dialogTitle = $localize`Import Activities`; protected errorMessages: string[] = []; - protected readonly ghostfolioAiTooltip = $localize`Only upload anonymized or redacted data, as it will be sent to third parties.`; + protected readonly ghostfolioAiTooltip = $localize`The content of your file will be processed by a third-party AI provider. Please remove any personal data before uploading.`; protected readonly hasPermissionToImportActivitiesWithAi = hasPermission( this.data.user?.permissions, permissions.importActivitiesWithAi diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html index a068f2b257..a82e752257 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -4,10 +4,11 @@ (closeButtonClicked)="onCancel()" /> -
+
} - @if (hasPermissionToImportActivitiesWithAi) { -
-
- - Smart import with Ghostfolio AI - - - - -
- @if (isGhostfolioAiEnabled) { -

- Ghostfolio AI also reads CSV files of other brokers and - JPG, PDF and PNG files with up to - {{ maxActivitiesOfGhostfolioAi }} activities. -

- } -
- }

CSV - or + @if (isGhostfolioAiEnabled) { + , JPG, + } @else { + or + } JSON + @if (isGhostfolioAiEnabled) { + , PDF + or + PNG + }

+ @if ( + data.deviceType !== 'mobile' && + hasPermissionToImportActivitiesWithAi + ) { +
+ + Smart import with Ghostfolio AI + + + + +
+ }
}
@@ -216,7 +218,7 @@ (selectedActivities)="updateSelection($event)" /> } -
+
diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.scss b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.scss index 79f8f868c5..9d3ee64993 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.scss +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.scss @@ -9,6 +9,13 @@ } mat-stepper { + @include mat.stepper-overrides( + ( + header-focus-state-layer-color: transparent, + header-hover-state-layer-color: transparent + ) + ); + ::ng-deep { .mat-step-header { &[aria-selected='false'] {