Browse Source

Merge remote-tracking branch 'origin/main' into task/enable-no-implicit-override

pull/7355/head
KenTandrian 2 days ago
parent
commit
d82f3c1890
  1. 7
      CHANGELOG.md
  2. 14
      apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.service.mock.ts
  3. 1
      apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
  4. 32
      apps/client/src/app/components/admin-market-data/admin-market-data.html
  5. 418
      apps/client/src/locales/messages.ca.xlf
  6. 418
      apps/client/src/locales/messages.de.xlf
  7. 418
      apps/client/src/locales/messages.es.xlf
  8. 418
      apps/client/src/locales/messages.fr.xlf
  9. 418
      apps/client/src/locales/messages.it.xlf
  10. 418
      apps/client/src/locales/messages.ja.xlf
  11. 418
      apps/client/src/locales/messages.ko.xlf
  12. 418
      apps/client/src/locales/messages.nl.xlf
  13. 418
      apps/client/src/locales/messages.pl.xlf
  14. 418
      apps/client/src/locales/messages.pt.xlf
  15. 418
      apps/client/src/locales/messages.tr.xlf
  16. 418
      apps/client/src/locales/messages.uk.xlf
  17. 415
      apps/client/src/locales/messages.xlf
  18. 418
      apps/client/src/locales/messages.zh.xlf
  19. 2
      apps/client/src/styles.scss
  20. 4
      package-lock.json
  21. 2
      package.json
  22. 4
      tsconfig.base.json

7
CHANGELOG.md

@ -9,7 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Improved the language localization for German (`de`)
## 3.28.0 - 2026-07-17
### Changed
- Migrated the clone, create and edit activity dialogs to dedicated routes
- Improved the language localization in the historical market data table of the admin control panel
- Improved the language localization in the tag management of the admin control panel
### Fixed

14
apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.service.mock.ts

@ -1,4 +1,4 @@
import { Job, JobOptions } from 'bull';
import type { Job, JobId, JobOptions } from 'bull';
import { setTimeout } from 'timers/promises';
import { PortfolioSnapshotQueueJob } from './interfaces/portfolio-snapshot-queue-job.interface';
@ -10,8 +10,8 @@ export const PortfolioSnapshotServiceMock = {
data: PortfolioSnapshotQueueJob;
name: string;
opts?: JobOptions;
}): Promise<Job<any>> {
const mockJob: Partial<Job<any>> = {
}): Promise<Job> {
const mockJob: Partial<Job> = {
finished: async () => {
await setTimeout(100);
@ -21,12 +21,12 @@ export const PortfolioSnapshotServiceMock = {
this.jobsStore.set(opts?.jobId, mockJob);
return Promise.resolve(mockJob as Job<any>);
return Promise.resolve(mockJob as Job);
},
getJob(jobId: string): Promise<Job<any>> {
getJob(jobId: JobId): Promise<Job> {
const job = this.jobsStore.get(jobId);
return Promise.resolve(job as Job<any>);
return Promise.resolve(job as Job);
},
jobsStore: new Map<string, Partial<Job<any>>>()
jobsStore: new Map<JobId, Partial<Job>>()
};

1
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts

@ -158,6 +158,7 @@ export class GfAdminMarketDataComponent implements AfterViewInit, OnInit {
protected placeholder = '';
protected readonly selection = new SelectionModel<AssetProfileItem>(true);
protected totalItems = 0;
protected readonly translate = translate;
protected user: User;
private activeFilters: Filter[] = [];

32
apps/client/src/app/components/admin-market-data/admin-market-data.html

@ -87,7 +87,11 @@
>
<ng-container i18n>Name</ng-container>
</th>
<td *matCellDef="let element" class="line-height-1 px-1" mat-cell>
<td
*matCellDef="let element"
class="line-height-normal px-1"
mat-cell
>
<div class="text-truncate">{{ element.name }}</div>
@if (!isUUID(element.symbol)) {
<div>
@ -113,8 +117,17 @@
<th *matHeaderCellDef class="px-1" mat-header-cell mat-sort-header>
<ng-container i18n>Asset Class</ng-container>
</th>
<td *matCellDef="let element" class="px-1" mat-cell>
{{ element.assetClass }}
<td
*matCellDef="let element"
class="line-height-normal px-1 text-nowrap"
mat-cell
>
<div>{{ translate(element.assetClass) }}</div>
@if (element.assetClass) {
<div>
<small class="text-muted">{{ element.assetClass }}</small>
</div>
}
</td>
</ng-container>
@ -122,8 +135,17 @@
<th *matHeaderCellDef class="px-1" mat-header-cell mat-sort-header>
<ng-container i18n>Asset Sub Class</ng-container>
</th>
<td *matCellDef="let element" class="px-1" mat-cell>
{{ element.assetSubClass }}
<td
*matCellDef="let element"
class="line-height-normal px-1 text-nowrap"
mat-cell
>
<div>{{ translate(element.assetSubClass) }}</div>
@if (element.assetSubClass) {
<div>
<small class="text-muted">{{ element.assetSubClass }}</small>
</div>
}
</td>
</ng-container>

418
apps/client/src/locales/messages.ca.xlf

File diff suppressed because it is too large

418
apps/client/src/locales/messages.de.xlf

File diff suppressed because it is too large

418
apps/client/src/locales/messages.es.xlf

File diff suppressed because it is too large

418
apps/client/src/locales/messages.fr.xlf

File diff suppressed because it is too large

418
apps/client/src/locales/messages.it.xlf

File diff suppressed because it is too large

418
apps/client/src/locales/messages.ja.xlf

File diff suppressed because it is too large

418
apps/client/src/locales/messages.ko.xlf

File diff suppressed because it is too large

418
apps/client/src/locales/messages.nl.xlf

File diff suppressed because it is too large

418
apps/client/src/locales/messages.pl.xlf

File diff suppressed because it is too large

418
apps/client/src/locales/messages.pt.xlf

File diff suppressed because it is too large

418
apps/client/src/locales/messages.tr.xlf

File diff suppressed because it is too large

418
apps/client/src/locales/messages.uk.xlf

File diff suppressed because it is too large

415
apps/client/src/locales/messages.xlf

File diff suppressed because it is too large

418
apps/client/src/locales/messages.zh.xlf

File diff suppressed because it is too large

2
apps/client/src/styles.scss

@ -385,7 +385,7 @@ ngx-skeleton-loader {
}
.line-height-normal {
line-height: normal;
line-height: normal !important;
}
.mat-mdc-button-base {

4
package-lock.json

@ -1,12 +1,12 @@
{
"name": "ghostfolio",
"version": "3.27.0",
"version": "3.28.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "ghostfolio",
"version": "3.27.0",
"version": "3.28.0",
"hasInstallScript": true,
"license": "AGPL-3.0",
"dependencies": {

2
package.json

@ -1,6 +1,6 @@
{
"name": "ghostfolio",
"version": "3.27.0",
"version": "3.28.0",
"homepage": "https://ghostfol.io",
"license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio",

4
tsconfig.base.json

@ -29,12 +29,12 @@
"strictPropertyInitialization": false,
"noImplicitReturns": false,
"noImplicitAny": false,
"noImplicitThis": false,
"noImplicitThis": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": false,
"noUnusedLocals": true,
"noUnusedParameters": true,
"allowUnreachableCode": true
"allowUnreachableCode": false
},
"exclude": ["node_modules", "tmp"]
}

Loading…
Cancel
Save