Compare commits

...

2 Commits

Author SHA1 Message Date
Ankit Singh 7b0ebf1587
Feature/auto-refresh user table in admin control panel every 30s (#6954) 4 days ago
Thomas Kaul 3adf880444
Task/extend personal finance tools (#6985) 4 days ago
  1. 6
      CHANGELOG.md
  2. 22
      apps/client/src/app/components/admin-users/admin-users.component.ts
  3. 61
      libs/common/src/lib/personal-finance-tools.ts

6
CHANGELOG.md

@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Added
- Added an automatic refresh every 30 seconds to the users table in the admin control panel
## 3.7.0 - 2026-06-02
### Added

22
apps/client/src/app/components/admin-users/admin-users.component.ts

@ -59,8 +59,10 @@ import {
personOutline,
trashOutline
} from 'ionicons/icons';
import ms from 'ms';
import { DeviceDetectorService } from 'ngx-device-detector';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
import { interval } from 'rxjs';
import { switchMap, tap } from 'rxjs/operators';
@Component({
@ -184,6 +186,15 @@ export class GfAdminUsersComponent implements OnInit {
public ngOnInit() {
this.fetchUsers();
interval(ms('30 seconds'))
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.fetchUsers({
pageIndex: this.paginator().pageIndex,
showLoading: false
});
});
}
protected formatDistanceToNow(aDateString: string) {
@ -267,8 +278,13 @@ export class GfAdminUsersComponent implements OnInit {
);
}
private fetchUsers({ pageIndex }: { pageIndex: number } = { pageIndex: 0 }) {
this.isLoading = true;
private fetchUsers({
pageIndex = 0,
showLoading = true
}: { pageIndex?: number; showLoading?: boolean } = {}) {
if (showLoading) {
this.isLoading = true;
}
if (pageIndex === 0 && this.paginator()) {
this.paginator().pageIndex = 0;
@ -281,7 +297,7 @@ export class GfAdminUsersComponent implements OnInit {
})
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ count, users }) => {
this.dataSource = new MatTableDataSource(users);
this.dataSource.data = users;
this.totalItems = count;
this.isLoading = false;

61
libs/common/src/lib/personal-finance-tools.ts

@ -518,6 +518,18 @@ export const personalFinanceTools: Product[] = [
origin: 'Germany',
slogan: 'Volle Kontrolle über deine Investitionen'
},
{
founded: 2024,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'gustav',
languages: ['Français'],
name: 'Gustav',
origin: 'France',
pricingPerYear: '€59.99',
slogan: 'Prenez enfin le contrôle de votre argent',
url: 'https://get-gustav.com'
},
{
hasFreePlan: true,
hasSelfHostingAbility: false,
@ -784,6 +796,16 @@ export const personalFinanceTools: Product[] = [
'Track your equity, fund, investment trust, ETF and pension investments in one place.',
url: 'https://www.morningstar.com/mm'
},
{
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'myfinancetools',
languages: ['Deutsch', 'English', 'Español', 'Français', 'Português'],
name: 'MyFinanceTools',
pricingPerYear: '$36',
slogan: 'Your Personal Finance Command Center',
url: 'https://myfinancetools.io'
},
{
founded: 2020,
hasFreePlan: true,
@ -806,6 +828,15 @@ export const personalFinanceTools: Product[] = [
slogan: 'The Intelligent Portfolio Tracker',
url: 'https://www.navexa.com'
},
{
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'networthy',
name: 'Networthy',
pricingPerYear: '€49.99',
slogan: 'Your Personal Financial Analyst, powered by AI.',
url: 'https://networthy.pro'
},
{
founded: 2020,
hasSelfHostingAbility: false,
@ -955,6 +986,17 @@ export const personalFinanceTools: Product[] = [
slogan: 'The stock portfolio tracker built for long-term investors',
url: 'https://prostocktracker.com'
},
{
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'rallies',
languages: ['English'],
name: 'Rallies',
pricingPerYear: '$99.99',
slogan:
'Your entire financial life in one app, monitored continuously by agents',
url: 'https://rallies.ai'
},
{
founded: 2015,
hasSelfHostingAbility: false,
@ -1130,6 +1172,25 @@ export const personalFinanceTools: Product[] = [
slogan: 'The Trading Journal to Improve Your Trading Performance',
url: 'https://www.tradervue.com'
},
{
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'trefolio',
languages: [
'Deutsch',
'English',
'Español',
'Français',
'Italiano',
'Nederlands',
'Polski',
'Português'
],
name: 'trefolio',
pricingPerYear: '€60',
slogan: 'The Extra Leaf for Your Portfolio',
url: 'https://trefolio.com'
},
{
founded: 2020,
hasSelfHostingAbility: false,

Loading…
Cancel
Save