Merge branch 'main' of gitea.suda.codes:giteauser/ghostfolio-mirror

This commit is contained in:
ksyasuda 2024-09-29 16:25:20 -07:00
commit 5deeb8861e
4 changed files with 110 additions and 18 deletions

View File

@ -9,6 +9,11 @@
>&nbsp;<strong>{{ product2.name }}</strong>
</h1>
</div>
@if (product2.isArchived) {
<div class="info-container my-4 p-2 rounded text-center text-muted">
<ng-container i18n>This page has been archived.</ng-container>
</div>
}
<section class="mb-4">
<p i18n>
Are you looking for an open source alternative to
@ -128,16 +133,36 @@
</td>
<td class="mat-mdc-cell px-1 py-2">
@if (product1.isOpenSource) {
<ng-container i18n>✅ Yes</ng-container>
<span
i18n
i18n-title
title="{{ product1.name }} is Open Source Software"
>✅ Yes</span
>
} @else {
<ng-container i18n>❌ No</ng-container>
<span
i18n
i18n-title
title="{{ product1.name }} is not Open Source Software"
>❌ No</span
>
}
</td>
<td class="mat-mdc-cell px-1 py-2">
@if (product2.isOpenSource) {
<ng-container i18n>✅ Yes</ng-container>
<span
i18n
i18n-title
title="{{ product2.name }} is Open Source Software"
>✅ Yes</span
>
} @else {
<ng-container i18n>❌ No </ng-container>
<span
i18n
i18n-title
title="{{ product2.name }} is not Open Source Software"
>❌ No</span
>
}
</td>
</tr>
@ -147,16 +172,36 @@
</td>
<td class="mat-mdc-cell px-1 py-2">
@if (product1.hasSelfHostingAbility === true) {
<ng-container i18n>✅ Yes</ng-container>
<span
i18n
i18n-title
title="{{ product1.name }} can be self-hosted"
>✅ Yes</span
>
} @else if (product1.hasSelfHostingAbility === false) {
<ng-container i18n>❌ No</ng-container>
<span
i18n
i18n-title
title="{{ product1.name }} cannot be self-hosted"
>❌ No</span
>
}
</td>
<td class="mat-mdc-cell px-1 py-2">
@if (product2.hasSelfHostingAbility === true) {
<ng-container i18n>✅ Yes</ng-container>
<span
i18n
i18n-title
title="{{ product2.name }} can be self-hosted"
>✅ Yes</span
>
} @else if (product2.hasSelfHostingAbility === false) {
<ng-container i18n>❌ No</ng-container>
<span
i18n
i18n-title
title="{{ product2.name }} cannot be self-hosted"
>❌ No</span
>
}
</td>
</tr>
@ -166,16 +211,36 @@
</td>
<td class="mat-mdc-cell px-1 py-2">
@if (product1.useAnonymously === true) {
<ng-container i18n>✅ Yes</ng-container>
<span
i18n
i18n-title
title="{{ product1.name }} can be used anonymously"
>✅ Yes</span
>
} @else if (product1.useAnonymously === false) {
<ng-container i18n>❌ No</ng-container>
<span
i18n
i18n-title
title="{{ product1.name }} cannot be used anonymously"
>❌ No</span
>
}
</td>
<td class="mat-mdc-cell px-1 py-2">
@if (product2.useAnonymously === true) {
<ng-container i18n>✅ Yes</ng-container>
<span
i18n
i18n-title
title="{{ product2.name }} can be used anonymously"
>✅ Yes</span
>
} @else if (product2.useAnonymously === false) {
<ng-container i18n>❌ No</ng-container>
<span
i18n
i18n-title
title="{{ product2.name }} cannot be used anonymously"
>❌ No</span
>
}
</td>
</tr>
@ -185,16 +250,36 @@
</td>
<td class="mat-mdc-cell px-1 py-2">
@if (product1.hasFreePlan === true) {
<ng-container i18n>✅ Yes</ng-container>
<span
i18n
i18n-title
title="{{ product1.name }} offers a free plan"
>✅ Yes</span
>
} @else if (product1.hasFreePlan === false) {
<ng-container i18n>❌ No</ng-container>
<span
i18n
i18n-title
title="{{ product1.name }} does not offer a free plan"
>❌ No</span
>
}
</td>
<td class="mat-mdc-cell px-1 py-2">
@if (product2.hasFreePlan === true) {
<ng-container i18n>✅ Yes</ng-container>
<span
i18n
i18n-title
title="{{ product2.name }} offers a free plan"
>✅ Yes</span
>
} @else if (product2.hasFreePlan === false) {
<ng-container i18n>❌ No</ng-container>
<span
i18n
i18n-title
title="{{ product2.name }} does not offer a free plan"
>❌ No</span
>
}
</td>
</tr>

View File

@ -11,7 +11,8 @@
}
}
.call-to-action {
.call-to-action,
.info-container {
background-color: rgba(var(--palette-foreground-text), 0.02);
}
}
@ -19,7 +20,8 @@
:host-context(.theme-dark) {
color: rgb(var(--light-primary-text));
.call-to-action {
.call-to-action,
.info-container {
background-color: rgba(var(--palette-foreground-text-dark), 0.02);
}
}

View File

@ -3,6 +3,7 @@ export interface Product {
founded?: number;
hasFreePlan?: boolean;
hasSelfHostingAbility?: boolean;
isArchived?: boolean;
isOpenSource?: boolean;
key: string;
languages?: string[];

View File

@ -369,6 +369,7 @@ export const personalFinanceTools: Product[] = [
{
founded: 2021,
hasSelfHostingAbility: false,
isArchived: true,
key: 'maybe-finance',
languages: ['English'],
name: 'Maybe Finance',
@ -678,10 +679,13 @@ export const personalFinanceTools: Product[] = [
slogan: 'Make Smarter Investments'
},
{
founded: 2024,
hasSelfHostingAbility: true,
isArchived: true,
key: 'wealthfolio',
languages: ['English'],
name: 'Wealthfolio',
origin: 'Canada',
slogan: 'Desktop Investment Tracker'
},
{