diff --git a/app/Api/V2/Controllers/NetWorthController.php b/app/Api/V2/Controllers/NetWorthController.php
new file mode 100644
index 0000000000..e1f25159e4
--- /dev/null
+++ b/app/Api/V2/Controllers/NetWorthController.php
@@ -0,0 +1,64 @@
+.
+ */
+
+namespace FireflyIII\Api\V2\Controllers;
+
+use FireflyIII\Api\V2\Request\Generic\SingleDateRequest;
+use FireflyIII\Helpers\Report\NetWorthInterface;
+use FireflyIII\Repositories\Account\AccountRepositoryInterface;
+use FireflyIII\Support\Http\Api\ConvertsExchangeRates;
+use Illuminate\Http\JsonResponse;
+
+/**
+ * Class NetWorthController
+ */
+class NetWorthController extends Controller
+{
+ use ConvertsExchangeRates;
+
+ private NetWorthInterface $netWorth;
+ private AccountRepositoryInterface $repository;
+
+ /**
+ *
+ */
+ public function __construct()
+ {
+ $this->middleware(
+ function ($request, $next) {
+ $this->repository = app(AccountRepositoryInterface::class);
+ $this->netWorth = app(NetWorthInterface::class);
+ $this->netWorth->setUser(auth()->user());
+ return $next($request);
+ }
+ );
+ }
+
+ public function get(SingleDateRequest $request): JsonResponse
+ {
+ $date = $request->getDate();
+ $result = $this->netWorth->sumNetWorthByCurrency($date);
+ $converted = $this->cerSum($result);
+
+ return response()->json($converted);
+ }
+
+}
diff --git a/app/Helpers/Report/NetWorth.php b/app/Helpers/Report/NetWorth.php
index 451b56ad08..df695cda2a 100644
--- a/app/Helpers/Report/NetWorth.php
+++ b/app/Helpers/Report/NetWorth.php
@@ -24,7 +24,9 @@ declare(strict_types=1);
namespace FireflyIII\Helpers\Report;
use Carbon\Carbon;
+use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Account;
+use FireflyIII\Models\AccountType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use FireflyIII\Support\CacheProperties;
@@ -38,9 +40,7 @@ use JsonException;
*/
class NetWorth implements NetWorthInterface
{
-
- /** @var AccountRepositoryInterface */
- private $accountRepository;
+ private AccountRepositoryInterface $accountRepository;
/** @var CurrencyRepositoryInterface */
private $currencyRepos;
@@ -63,11 +63,10 @@ class NetWorth implements NetWorthInterface
*
* @return array
* @throws JsonException
- * @throws \FireflyIII\Exceptions\FireflyException
+ * @throws FireflyException
*/
public function getNetWorthByCurrency(Collection $accounts, Carbon $date): array
{
-
// start in the past, end in the future? use $date
$cache = new CacheProperties;
$cache->addProperty($date);
@@ -144,4 +143,55 @@ class NetWorth implements NetWorthInterface
$this->currencyRepos = app(CurrencyRepositoryInterface::class);
$this->currencyRepos->setUser($this->user);
}
+
+ /**
+ * @inheritDoc
+ */
+ public function sumNetWorthByCurrency(Carbon $date): array
+ {
+ /**
+ * Collect accounts
+ */
+ $accounts = $this->getAccounts();
+ $return = [];
+ $balances = app('steam')->balancesByAccounts($accounts, $date);
+ foreach ($accounts as $account) {
+ $currency = $this->accountRepository->getAccountCurrency($account);
+ $balance = $balances[$account->id] ?? '0';
+
+ // always subtract virtual balance.
+ $virtualBalance = (string) $account->virtual_balance;
+ if ('' !== $virtualBalance) {
+ $balance = bcsub($balance, $virtualBalance);
+ }
+
+ $return[$currency->id] = $return[$currency->id] ?? [
+ 'id' => (string) $currency->id,
+ 'name' => $currency->name,
+ 'symbol' => $currency->symbol,
+ 'code' => $currency->code,
+ 'decimal_places' => $currency->decimal_places,
+ 'sum' => '0',
+ ];
+ $return[$currency->id]['sum'] = bcadd($return[$currency->id]['sum'], $balance);
+ }
+
+ return $return;
+ }
+
+ /**
+ * @return Collection
+ */
+ private function getAccounts(): Collection
+ {
+ $accounts = $this->accountRepository->getAccountsByType([AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::DEFAULT, AccountType::CREDITCARD]);
+ $filtered = new Collection;
+ /** @var Account $account */
+ foreach ($accounts as $account) {
+ if (1 === (int) $this->accountRepository->getMetaValue($account, 'include_net_worth')) {
+ $filtered->push($account);
+ }
+ }
+ return $filtered;
+ }
}
diff --git a/app/Helpers/Report/NetWorthInterface.php b/app/Helpers/Report/NetWorthInterface.php
index 0cb371b2c5..c4bd89c199 100644
--- a/app/Helpers/Report/NetWorthInterface.php
+++ b/app/Helpers/Report/NetWorthInterface.php
@@ -46,8 +46,8 @@ interface NetWorthInterface
*
* @param Collection $accounts
* @param Carbon $date
- *
* @return array
+ * @deprecated
*/
public function getNetWorthByCurrency(Collection $accounts, Carbon $date): array;
@@ -56,4 +56,15 @@ interface NetWorthInterface
*/
public function setUser(User $user): void;
+ /**
+ * TODO move to repository
+ *
+ * Same as above but cleaner function with less dependencies.
+ *
+ * @param Carbon $date
+ *
+ * @return array
+ */
+ public function sumNetWorthByCurrency(Carbon $date): array;
+
}
diff --git a/frontend/src/api/v2/net-worth/index.js b/frontend/src/api/v2/net-worth/index.js
new file mode 100644
index 0000000000..6037ee45a2
--- /dev/null
+++ b/frontend/src/api/v2/net-worth/index.js
@@ -0,0 +1,29 @@
+/*
+ * basic.js
+ * Copyright (c) 2021 james@firefly-iii.org
+ *
+ * This file is part of Firefly III (https://github.com/firefly-iii).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+import {api} from "boot/axios";
+import {format} from "date-fns";
+
+export default class NetWorth {
+ get(date) {
+ let dateStr = format(date, 'y-MM-dd');
+ return api.get('/api/v2/net-worth', {params: {date: dateStr}});
+ }
+}
diff --git a/frontend/src/components/dashboard/BillInsightBox.vue b/frontend/src/components/dashboard/BillInsightBox.vue
index 942cc04bb6..69192c6083 100644
--- a/frontend/src/components/dashboard/BillInsightBox.vue
+++ b/frontend/src/components/dashboard/BillInsightBox.vue
@@ -36,25 +36,28 @@
:value="percentage"
size="50px"
:thickness="0.22"
- color="green"
- track-color="grey-3"
+ color="positive"
+ track-color="negative"
/>
- You have no bills
+ {{ $t('firefly.no_bill') }}
{{ $t('firefly.bills_to_pay') }}:
-
- ({{ formatAmount(bill.code, bill.sum) }}),
+
+
+
+ {{ formatAmount(item.code, item.sum) }} +
+
- {{ $t('firefly.bills_paid') }}:
- ({{
- formatAmount(bill.code, bill.sum)
- }}),
+ {{ $t('firefly.bills_paid') }}:
+
+
+ {{formatAmount(item.code, item.sum) }}
+
+ +
@@ -74,10 +77,6 @@ export default {
currency: 'EUR',
unpaidAmount: 0.0,
paidAmount: 0.0,
- range: {
- start: null,
- end: null,
- },
}
},
name: "BillInsightBox",
@@ -99,19 +98,16 @@ export default {
mounted() {
this.store = useFireflyIIIStore();
// TODO this code snippet is recycled a lot.
- if (null === this.range.start || null === this.range.end) {
- // subscribe, then update:
- this.store.$onAction(
- ({name, $store, args, after, onError,}) => {
- after((result) => {
- if (name === 'setRange') {
- this.range = result;
- this.triggerUpdate();
- }
- })
- }
- )
- }
+ // subscribe, then update:
+ this.store.$onAction(
+ ({name, $store, args, after, onError,}) => {
+ after((result) => {
+ if (name === 'setRange') {
+ this.triggerUpdate();
+ }
+ })
+ }
+ )
this.triggerUpdate();
},
methods: {
@@ -139,6 +135,8 @@ export default {
{
sum: current.sum,
code: current.code,
+ native_sum: current.native_sum,
+ native_code: current.native_code,
native: hasNative,
}
);
@@ -157,6 +155,8 @@ export default {
{
sum: current.sum,
code: current.code,
+ native_sum: current.native_sum,
+ native_code: current.native_code,
native: hasNative,
}
);
diff --git a/frontend/src/components/dashboard/NetWorthInsightBox.vue b/frontend/src/components/dashboard/NetWorthInsightBox.vue
new file mode 100644
index 0000000000..6f5d9048cb
--- /dev/null
+++ b/frontend/src/components/dashboard/NetWorthInsightBox.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+ {{ $t('firefly.net_worth') }}
+
+
+
+
+
+
+
+
+
+ {{ formatAmount(currency, primary) }}
+
+
+ {{ formatAmount(item.code, item.sum) }}
+ +
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/components/dashboard/SpendInsightBox.vue b/frontend/src/components/dashboard/SpendInsightBox.vue
index 76b80a5127..94b76b897a 100644
--- a/frontend/src/components/dashboard/SpendInsightBox.vue
+++ b/frontend/src/components/dashboard/SpendInsightBox.vue
@@ -26,7 +26,7 @@
- To spend and left
+ {{ $t('firefly.left_to_spend') }}
@@ -36,22 +36,27 @@
:value="percentage"
size="50px"
:thickness="0.22"
- color="green"
- track-color="grey-3"
+ color="negative"
+ track-color="positive"
/>
- You have no budgets set
+ {{ $t('firefly.no_budget') }}
- Budgeted:
- ({{ formatAmount(budget.code, budget.sum) }}),
-
- Spent:
- ({{ formatAmount(budget.code, budget.sum) }}),
+ {{ $t('firefly.budgeted') }}:
+
+
+ {{ formatAmount(item.code, item.sum) }}
+ +
+
+
+ {{ $t('firefly.spent') }}:
+
+
+ {{ formatAmount(item.code, item.sum) }}
+ +
@@ -72,10 +77,6 @@ export default {
//percentage: 0,
budgetedAmount: 0.0,
spentAmount: 0.0,
- range: {
- start: null,
- end: null,
- },
}
},
name: "SpendInsightBox",
@@ -98,19 +99,16 @@ export default {
this.store = useFireflyIIIStore();
// TODO this code snippet is recycled a lot.
- if (null === this.range.start || null === this.range.end) {
- // subscribe, then update:
- this.store.$onAction(
- ({name, $store, args, after, onError,}) => {
- after((result) => {
- if (name === 'setRange') {
- this.range = result;
- this.triggerUpdate();
- }
- })
- }
- )
- }
+ // subscribe, then update:
+ this.store.$onAction(
+ ({name, $store, args, after, onError,}) => {
+ after((result) => {
+ if (name === 'setRange') {
+ this.triggerUpdate();
+ }
+ })
+ }
+ )
this.triggerUpdate();
},
methods: {
@@ -138,6 +136,8 @@ export default {
{
sum: current.sum,
code: current.code,
+ native_sum: current.native_sum,
+ native_code: current.native_code,
native: hasNative
}
);
@@ -156,6 +156,8 @@ export default {
{
sum: current.sum,
code: current.code,
+ native_sum: current.native_sum,
+ native_code: current.native_code,
native: hasNative
}
);
diff --git a/frontend/src/i18n/bg_BG/index.js b/frontend/src/i18n/bg_BG/index.js
index e47a6baf43..8612ac7f86 100644
--- a/frontend/src/i18n/bg_BG/index.js
+++ b/frontend/src/i18n/bg_BG/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "\u041d\u043e\u0432 \u0434\u0435\u043f\u043e\u0437\u0438\u0442",
"newWithdrawal": "\u041d\u043e\u0432 \u0440\u0430\u0437\u0445\u043e\u0434",
"bills_paid": "\u041f\u043b\u0430\u0442\u0435\u043d\u0438 \u0441\u043c\u0435\u0442\u043a\u0438",
+ "left_to_spend": "\u041e\u0441\u0442\u0430\u043d\u0430\u043b\u0438 \u0437\u0430 \u0445\u0430\u0440\u0447\u0435\u043d\u0435",
+ "no_budget": "(\u0431\u0435\u0437 \u0431\u044e\u0434\u0436\u0435\u0442)",
+ "budgeted": "\u0411\u044e\u0434\u0436\u0435\u0442\u0438\u0440\u0430\u043d\u0438",
+ "spent": "\u041f\u043e\u0445\u0430\u0440\u0447\u0435\u043d\u0438",
+ "no_bill": "(\u043d\u044f\u043c\u0430 \u0441\u043c\u0435\u0442\u043a\u0430)",
"rule_trigger_source_account_starts_choice": "\u0418\u043c\u0435\u0442\u043e \u043d\u0430 \u0440\u0430\u0437\u0445\u043e\u0434\u043d\u0430\u0442\u0430 \u0441\u043c\u0435\u0442\u043a\u0430 \u0437\u0430\u043f\u043e\u0447\u0432\u0430 \u0441..",
"rule_trigger_source_account_ends_choice": "\u0418\u043c\u0435\u0442\u043e \u043d\u0430 \u0440\u0430\u0437\u0445\u043e\u0434\u043d\u0430\u0442\u0430 \u0441\u043c\u0435\u0442\u043a\u0430 \u0437\u0430\u0432\u044a\u0440\u0448\u0432\u0430 \u0441..",
"rule_trigger_source_account_is_choice": "\u0418\u043c\u0435\u0442\u043e \u043d\u0430 \u0440\u0430\u0437\u0445\u043e\u0434\u043d\u0430\u0442\u0430 \u0441\u043c\u0435\u0442\u043a\u0430 \u0435..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "\u0410\u0431\u043e\u043d\u0430\u043c\u0435\u043d\u0442\u0438",
"welcome_back": "\u041a\u0430\u043a\u0432\u043e \u0441\u0435 \u0441\u043b\u0443\u0447\u0432\u0430?",
"bills_to_pay": "\u0421\u043c\u0435\u0442\u043a\u0438 \u0437\u0430 \u043f\u043b\u0430\u0449\u0430\u043d\u0435",
- "left_to_spend": "\u041e\u0441\u0442\u0430\u043d\u0430\u043b\u0438 \u0437\u0430 \u0445\u0430\u0440\u0447\u0435\u043d\u0435",
"net_worth": "\u041d\u0435\u0442\u043d\u0430 \u0441\u0442\u043e\u0439\u043d\u043e\u0441\u0442",
"pref_last365": "Last year",
"pref_last90": "Last 90 days",
diff --git a/frontend/src/i18n/cs_CZ/index.js b/frontend/src/i18n/cs_CZ/index.js
index a89760eebb..8d9cdc2dbb 100644
--- a/frontend/src/i18n/cs_CZ/index.js
+++ b/frontend/src/i18n/cs_CZ/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Nov\u00fd vklad",
"newWithdrawal": "Nov\u00fd v\u00fddaj",
"bills_paid": "Zaplacen\u00e9 \u00fa\u010dty",
+ "left_to_spend": "Zb\u00fdv\u00e1 k utracen\u00ed",
+ "no_budget": "(\u017e\u00e1dn\u00fd rozpo\u010det)",
+ "budgeted": "Rozpo\u010det",
+ "spent": "Utraceno",
+ "no_bill": "(no bill)",
"rule_trigger_source_account_starts_choice": "Source account name starts with..",
"rule_trigger_source_account_ends_choice": "Source account name ends with..",
"rule_trigger_source_account_is_choice": "Source account name is..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subscriptions",
"welcome_back": "Jak to jde?",
"bills_to_pay": "Faktury k zaplacen\u00ed",
- "left_to_spend": "Zb\u00fdv\u00e1 k utracen\u00ed",
"net_worth": "\u010cist\u00e9 jm\u011bn\u00ed",
"pref_last365": "Last year",
"pref_last90": "Last 90 days",
diff --git a/frontend/src/i18n/de_DE/index.js b/frontend/src/i18n/de_DE/index.js
index 99af0c881a..f3c82617ff 100644
--- a/frontend/src/i18n/de_DE/index.js
+++ b/frontend/src/i18n/de_DE/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Neue Einnahme",
"newWithdrawal": "Neue Ausgabe",
"bills_paid": "Rechnungen bezahlt",
+ "left_to_spend": "Verbleibend zum Ausgeben",
+ "no_budget": "(kein Budget)",
+ "budgeted": "Vorgesehen",
+ "spent": "Ausgegeben",
+ "no_bill": "(keine Belege)",
"rule_trigger_source_account_starts_choice": "Name des Quellkontos beginnt mit..",
"rule_trigger_source_account_ends_choice": "Quellkonto-Name endet mit..",
"rule_trigger_source_account_is_choice": "Quellkonto-Name lautet..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Abonnements",
"welcome_back": "\u00dcberblick",
"bills_to_pay": "Unbezahlte Rechnungen",
- "left_to_spend": "Verbleibend zum Ausgeben",
"net_worth": "Eigenkapital",
"pref_last365": "Letztes Jahr",
"pref_last90": "Letzte 90 Tage",
diff --git a/frontend/src/i18n/el_GR/index.js b/frontend/src/i18n/el_GR/index.js
index e52e641612..092a07f9e2 100644
--- a/frontend/src/i18n/el_GR/index.js
+++ b/frontend/src/i18n/el_GR/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "\u039d\u03ad\u03b1 \u03ba\u03b1\u03c4\u03ac\u03b8\u03b5\u03c3\u03b7",
"newWithdrawal": "\u039d\u03ad\u03b1 \u03b4\u03b1\u03c0\u03ac\u03bd\u03b7",
"bills_paid": "\u03a0\u03bb\u03b7\u03c1\u03c9\u03bc\u03ad\u03bd\u03b1 \u03c0\u03ac\u03b3\u03b9\u03b1 \u03ad\u03be\u03bf\u03b4\u03b1",
+ "left_to_spend": "\u0394\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b1 \u03c0\u03c1\u03bf\u03cb\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03ce\u03bd",
+ "no_budget": "(\u03c7\u03c9\u03c1\u03af\u03c2 \u03c0\u03c1\u03bf\u03cb\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03cc)",
+ "budgeted": "\u03a0\u03c1\u03bf\u03cb\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf",
+ "spent": "\u0394\u03b1\u03c0\u03b1\u03bd\u03ae\u03b8\u03b7\u03ba\u03b1\u03bd",
+ "no_bill": "(\u03c7\u03c9\u03c1\u03af\u03c2 \u03c0\u03ac\u03b3\u03b9\u03bf \u03ad\u03be\u03bf\u03b4\u03bf)",
"rule_trigger_source_account_starts_choice": "\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c4\u03bf\u03c5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd \u03c0\u03c1\u03bf\u03ad\u03bb\u03b5\u03c5\u03c3\u03b7\u03c2 \u03b1\u03c1\u03c7\u03af\u03b6\u03b5\u03b9 \u03bc\u03b5..",
"rule_trigger_source_account_ends_choice": "\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c4\u03bf\u03c5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd \u03c0\u03c1\u03bf\u03ad\u03bb\u03b5\u03c5\u03c3\u03b7\u03c2 \u03c4\u03b5\u03bb\u03b5\u03b9\u03ce\u03bd\u03b5\u03b9 \u03bc\u03b5..",
"rule_trigger_source_account_is_choice": "\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c4\u03bf\u03c5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd \u03c0\u03c1\u03bf\u03ad\u03bb\u03b5\u03c5\u03c3\u03b7\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "\u03a3\u03c5\u03bd\u03b4\u03c1\u03bf\u03bc\u03ad\u03c2",
"welcome_back": "\u03a4\u03b9 \u03c0\u03b1\u03af\u03b6\u03b5\u03b9;",
"bills_to_pay": "\u03a0\u03ac\u03b3\u03b9\u03b1 \u03ad\u03be\u03bf\u03b4\u03b1 \u03c0\u03c1\u03bf\u03c2 \u03c0\u03bb\u03b7\u03c1\u03c9\u03bc\u03ae",
- "left_to_spend": "\u0394\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b1 \u03c0\u03c1\u03bf\u03cb\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03ce\u03bd",
"net_worth": "\u039a\u03b1\u03b8\u03b1\u03c1\u03ae \u03b1\u03be\u03af\u03b1",
"pref_last365": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03ad\u03c4\u03bf\u03c2",
"pref_last90": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 90 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2",
diff --git a/frontend/src/i18n/en_GB/index.js b/frontend/src/i18n/en_GB/index.js
index f6760449d1..b0e49372d5 100644
--- a/frontend/src/i18n/en_GB/index.js
+++ b/frontend/src/i18n/en_GB/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "New deposit",
"newWithdrawal": "New expense",
"bills_paid": "Bills paid",
+ "left_to_spend": "Left to spend",
+ "no_budget": "(no budget)",
+ "budgeted": "Budgeted",
+ "spent": "Spent",
+ "no_bill": "(no bill)",
"rule_trigger_source_account_starts_choice": "Source account name starts with..",
"rule_trigger_source_account_ends_choice": "Source account name ends with..",
"rule_trigger_source_account_is_choice": "Source account name is..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subscriptions",
"welcome_back": "What's playing?",
"bills_to_pay": "Bills to pay",
- "left_to_spend": "Left to spend",
"net_worth": "Net worth",
"pref_last365": "Last year",
"pref_last90": "Last 90 days",
diff --git a/frontend/src/i18n/en_US/index.js b/frontend/src/i18n/en_US/index.js
index 58c512cc7a..0d4e92d4d1 100644
--- a/frontend/src/i18n/en_US/index.js
+++ b/frontend/src/i18n/en_US/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "New deposit",
"newWithdrawal": "New expense",
"bills_paid": "Bills paid",
+ "left_to_spend": "Left to spend",
+ "no_budget": "(no budget)",
+ "budgeted": "Budgeted",
+ "spent": "Spent",
+ "no_bill": "(no bill)",
"rule_trigger_source_account_starts_choice": "Source account name starts with..",
"rule_trigger_source_account_ends_choice": "Source account name ends with..",
"rule_trigger_source_account_is_choice": "Source account name is..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subscriptions",
"welcome_back": "What's playing?",
"bills_to_pay": "Bills to pay",
- "left_to_spend": "Left to spend",
"net_worth": "Net worth",
"pref_last365": "Last year",
"pref_last90": "Last 90 days",
diff --git a/frontend/src/i18n/es_ES/index.js b/frontend/src/i18n/es_ES/index.js
index c3614d11b4..03bdb04f82 100644
--- a/frontend/src/i18n/es_ES/index.js
+++ b/frontend/src/i18n/es_ES/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Nuevo deposito",
"newWithdrawal": "Nuevo gasto",
"bills_paid": "Facturas pagadas",
+ "left_to_spend": "Disponible para gastar",
+ "no_budget": "(sin presupuesto)",
+ "budgeted": "Presupuestado",
+ "spent": "Gastado",
+ "no_bill": "(sin factura)",
"rule_trigger_source_account_starts_choice": "El nombre de la cuenta de origen comienza con..",
"rule_trigger_source_account_ends_choice": "El nombre de la cuenta de origen termina con..",
"rule_trigger_source_account_is_choice": "El nombre de la cuenta origen es..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Suscripciones",
"welcome_back": "\u00bfQu\u00e9 est\u00e1 pasando?",
"bills_to_pay": "Facturas por pagar",
- "left_to_spend": "Disponible para gastar",
"net_worth": "Valor Neto",
"pref_last365": "A\u00f1o pasado",
"pref_last90": "\u00daltimos 90 d\u00edas",
diff --git a/frontend/src/i18n/fi_FI/index.js b/frontend/src/i18n/fi_FI/index.js
index 568c50e37b..38f0f46ea3 100644
--- a/frontend/src/i18n/fi_FI/index.js
+++ b/frontend/src/i18n/fi_FI/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Uusi talletus",
"newWithdrawal": "Uusi kustannus",
"bills_paid": "Maksetut laskut",
+ "left_to_spend": "K\u00e4ytett\u00e4viss\u00e4",
+ "no_budget": "(ei budjettia)",
+ "budgeted": "Budjetoitu",
+ "spent": "K\u00e4ytetty",
+ "no_bill": "(ei laskua)",
"rule_trigger_source_account_starts_choice": "L\u00e4hdetilin nimi alkaa ...",
"rule_trigger_source_account_ends_choice": "L\u00e4hdetilin nimi p\u00e4\u00e4ttyy..",
"rule_trigger_source_account_is_choice": "L\u00e4hdetilin nimi on..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Tilaukset",
"welcome_back": "Mit\u00e4 kuuluu?",
"bills_to_pay": "Laskuja maksettavana",
- "left_to_spend": "K\u00e4ytett\u00e4viss\u00e4",
"net_worth": "Varallisuus",
"pref_last365": "Edellinen vuosi",
"pref_last90": "Viimeiset 90 p\u00e4iv\u00e4\u00e4",
diff --git a/frontend/src/i18n/fr_FR/index.js b/frontend/src/i18n/fr_FR/index.js
index 8f2488c3b7..b6ec9c6a95 100644
--- a/frontend/src/i18n/fr_FR/index.js
+++ b/frontend/src/i18n/fr_FR/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Nouveau d\u00e9p\u00f4t",
"newWithdrawal": "Nouvelle d\u00e9pense",
"bills_paid": "Factures pay\u00e9es",
+ "left_to_spend": "Reste \u00e0 d\u00e9penser",
+ "no_budget": "(pas de budget)",
+ "budgeted": "Budg\u00e9tis\u00e9",
+ "spent": "D\u00e9pens\u00e9",
+ "no_bill": "(aucune facture)",
"rule_trigger_source_account_starts_choice": "Le nom du compte source commence par..",
"rule_trigger_source_account_ends_choice": "Le nom du compte source se termine par..",
"rule_trigger_source_account_is_choice": "Le nom du compte source est..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Abonnements",
"welcome_back": "Quoi de neuf ?",
"bills_to_pay": "Factures \u00e0 payer",
- "left_to_spend": "Reste \u00e0 d\u00e9penser",
"net_worth": "Avoir net",
"pref_last365": "L'ann\u00e9e derni\u00e8re",
"pref_last90": "Les 90 derniers jours",
diff --git a/frontend/src/i18n/hu_HU/index.js b/frontend/src/i18n/hu_HU/index.js
index 1b97d74491..0962bcb5d4 100644
--- a/frontend/src/i18n/hu_HU/index.js
+++ b/frontend/src/i18n/hu_HU/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "\u00daj bev\u00e9tel",
"newWithdrawal": "\u00daj k\u00f6lts\u00e9g",
"bills_paid": "Befizetett sz\u00e1ml\u00e1k",
+ "left_to_spend": "Elk\u00f6lthet\u0151",
+ "no_budget": "(nincs k\u00f6lts\u00e9gkeret)",
+ "budgeted": "Betervezett",
+ "spent": "Elk\u00f6lt\u00f6tt",
+ "no_bill": "(no bill)",
"rule_trigger_source_account_starts_choice": "Forr\u00e1ssz\u00e1mla nev\u00e9nek eleje..",
"rule_trigger_source_account_ends_choice": "Forr\u00e1ssz\u00e1mla nev\u00e9nek v\u00e9ge..",
"rule_trigger_source_account_is_choice": "A forr\u00e1ssz\u00e1mla neve..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subscriptions",
"welcome_back": "Mi a helyzet?",
"bills_to_pay": "Fizetend\u0151 sz\u00e1ml\u00e1k",
- "left_to_spend": "Elk\u00f6lthet\u0151",
"net_worth": "Nett\u00f3 \u00e9rt\u00e9k",
"pref_last365": "Last year",
"pref_last90": "Last 90 days",
diff --git a/frontend/src/i18n/it_IT/index.js b/frontend/src/i18n/it_IT/index.js
index 18ea46b221..3d1b2a1f02 100644
--- a/frontend/src/i18n/it_IT/index.js
+++ b/frontend/src/i18n/it_IT/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Nuova entrata",
"newWithdrawal": "Nuova uscita",
"bills_paid": "Bollette pagate",
+ "left_to_spend": "Altro da spendere",
+ "no_budget": "(nessun budget)",
+ "budgeted": "Preventivato",
+ "spent": "Speso",
+ "no_bill": "(nessuna bolletta)",
"rule_trigger_source_account_starts_choice": "Il nome del conto di origine inizia con..",
"rule_trigger_source_account_ends_choice": "Il nome del conto di origine termina con..",
"rule_trigger_source_account_is_choice": "Il nome del conto di origine \u00e8..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Abbonamenti",
"welcome_back": "La tua situazione finanziaria",
"bills_to_pay": "Bollette da pagare",
- "left_to_spend": "Altro da spendere",
"net_worth": "Patrimonio",
"pref_last365": "Anno scorso",
"pref_last90": "Ultimi 90 giorni",
diff --git a/frontend/src/i18n/ja_JP/index.js b/frontend/src/i18n/ja_JP/index.js
index 4a48c5e7fd..d7a2646a7f 100644
--- a/frontend/src/i18n/ja_JP/index.js
+++ b/frontend/src/i18n/ja_JP/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "\u65b0\u3057\u3044\u5165\u91d1",
"newWithdrawal": "\u65b0\u3057\u3044\u652f\u51fa",
"bills_paid": "\u652f\u6255\u3044\u6e08\u307f\u8acb\u6c42",
+ "left_to_spend": "\u652f\u51fa\u3067\u304d\u308b\u6b8b\u308a",
+ "no_budget": "(\u4e88\u7b97\u306a\u3057)",
+ "budgeted": "\u8a08\u4e0a\u4e88\u7b97",
+ "spent": "\u652f\u51fa",
+ "no_bill": "(\u8acb\u6c42\u306a\u3057)",
"rule_trigger_source_account_starts_choice": "\u51fa\u91d1\u5143\u53e3\u5ea7\u540d\u304c...\u3067\u59cb\u307e\u308b",
"rule_trigger_source_account_ends_choice": "\u51fa\u91d1\u5143\u53e3\u5ea7\u540d\u304c\u2026\u3067\u7d42\u308f\u308b",
"rule_trigger_source_account_is_choice": "\u51fa\u91d1\u5143\u53e3\u5ea7\u540d\u304c...",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "\u8b1b\u8aad",
"welcome_back": "\u6982\u8981",
"bills_to_pay": "\u8acb\u6c42\u66f8",
- "left_to_spend": "\u652f\u51fa\u3067\u304d\u308b\u6b8b\u308a",
"net_worth": "\u7d14\u8cc7\u7523",
"pref_last365": "\u6628\u5e74",
"pref_last90": "\u904e\u53bb 90 \u65e5\u9593",
diff --git a/frontend/src/i18n/nb_NO/index.js b/frontend/src/i18n/nb_NO/index.js
index 542d1c6977..7dec4d05fe 100644
--- a/frontend/src/i18n/nb_NO/index.js
+++ b/frontend/src/i18n/nb_NO/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Nytt innskudd",
"newWithdrawal": "Ny utgift",
"bills_paid": "Regninger betalt",
+ "left_to_spend": "Igjen \u00e5 bruke",
+ "no_budget": "(ingen budsjett)",
+ "budgeted": "Budsjettert",
+ "spent": "Brukt",
+ "no_bill": "(no bill)",
"rule_trigger_source_account_starts_choice": "Source account name starts with..",
"rule_trigger_source_account_ends_choice": "Source account name ends with..",
"rule_trigger_source_account_is_choice": "Source account name is..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subscriptions",
"welcome_back": "What's playing?",
"bills_to_pay": "Regninger \u00e5 betale",
- "left_to_spend": "Igjen \u00e5 bruke",
"net_worth": "Formue",
"pref_last365": "Last year",
"pref_last90": "Last 90 days",
diff --git a/frontend/src/i18n/nl_NL/index.js b/frontend/src/i18n/nl_NL/index.js
index 60cdb1ffed..74ecc48933 100644
--- a/frontend/src/i18n/nl_NL/index.js
+++ b/frontend/src/i18n/nl_NL/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Nieuwe inkomsten",
"newWithdrawal": "Nieuwe uitgave",
"bills_paid": "Betaalde contracten",
+ "left_to_spend": "Over om uit te geven",
+ "no_budget": "(geen budget)",
+ "budgeted": "Gebudgetteerd",
+ "spent": "Uitgegeven",
+ "no_bill": "(geen contract)",
"rule_trigger_source_account_starts_choice": "Bronrekeningnaam begint met..",
"rule_trigger_source_account_ends_choice": "Bronrekeningnaam eindigt op..",
"rule_trigger_source_account_is_choice": "Bronrekeningnaam is..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Abonnementen",
"welcome_back": "Hoe staat het er voor?",
"bills_to_pay": "Openstaande contracten",
- "left_to_spend": "Over om uit te geven",
"net_worth": "Kapitaal",
"pref_last365": "Afgelopen jaar",
"pref_last90": "Afgelopen 90 dagen",
diff --git a/frontend/src/i18n/pl_PL/index.js b/frontend/src/i18n/pl_PL/index.js
index 380433d92e..7e6dd51158 100644
--- a/frontend/src/i18n/pl_PL/index.js
+++ b/frontend/src/i18n/pl_PL/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Nowa wp\u0142ata",
"newWithdrawal": "Nowy wydatek",
"bills_paid": "Zap\u0142acone rachunki",
+ "left_to_spend": "Pozosta\u0142o do wydania",
+ "no_budget": "(brak bud\u017cetu)",
+ "budgeted": "Zabud\u017cetowano",
+ "spent": "Wydano",
+ "no_bill": "(brak rachunku)",
"rule_trigger_source_account_starts_choice": "Konto \u017ar\u00f3d\u0142owe si\u0119 zaczyna od..",
"rule_trigger_source_account_ends_choice": "Konto \u017ar\u00f3d\u0142owe ko\u0144czy si\u0119 na..",
"rule_trigger_source_account_is_choice": "Kontem \u017ar\u00f3d\u0142owym jest..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subskrypcje",
"welcome_back": "Co jest grane?",
"bills_to_pay": "Rachunki do zap\u0142acenia",
- "left_to_spend": "Pozosta\u0142o do wydania",
"net_worth": "Warto\u015b\u0107 netto",
"pref_last365": "Ostatni rok",
"pref_last90": "Ostatnie 90 dni",
diff --git a/frontend/src/i18n/pt_BR/index.js b/frontend/src/i18n/pt_BR/index.js
index 1977feea80..0959c09144 100644
--- a/frontend/src/i18n/pt_BR/index.js
+++ b/frontend/src/i18n/pt_BR/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Novo dep\u00f3sito",
"newWithdrawal": "Nova despesa",
"bills_paid": "Contas pagas",
+ "left_to_spend": "Restante para gastar",
+ "no_budget": "(sem or\u00e7amento)",
+ "budgeted": "Or\u00e7ado",
+ "spent": "Gasto",
+ "no_bill": "(sem conta)",
"rule_trigger_source_account_starts_choice": "Nome da conta de origem come\u00e7a com..",
"rule_trigger_source_account_ends_choice": "O nome da conta de origem termina com..",
"rule_trigger_source_account_is_choice": "Nome da conta de origem \u00e9..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Assinaturas",
"welcome_back": "O que est\u00e1 acontecendo?",
"bills_to_pay": "Contas a pagar",
- "left_to_spend": "Restante para gastar",
"net_worth": "Valor L\u00edquido",
"pref_last365": "Ano passado",
"pref_last90": "\u00daltimos 90 dias",
diff --git a/frontend/src/i18n/pt_PT/index.js b/frontend/src/i18n/pt_PT/index.js
index e093468c53..a44e961444 100644
--- a/frontend/src/i18n/pt_PT/index.js
+++ b/frontend/src/i18n/pt_PT/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Novo dep\u00f3sito",
"newWithdrawal": "Nova despesa",
"bills_paid": "Fatura pagas",
+ "left_to_spend": "Restante para gastar",
+ "no_budget": "(sem or\u00e7amento)",
+ "budgeted": "Or\u00e7amentado",
+ "spent": "Gasto",
+ "no_bill": "(sem fatura)",
"rule_trigger_source_account_starts_choice": "O nome da conta de origem come\u00e7a com..",
"rule_trigger_source_account_ends_choice": "O nome da conta de origem acaba com..",
"rule_trigger_source_account_is_choice": "O nome da conta de origem \u00e9..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subscri\u00e7\u00f5es",
"welcome_back": "Tudo bem?",
"bills_to_pay": "Faturas a pagar",
- "left_to_spend": "Restante para gastar",
"net_worth": "Patrim\u00f3nio liquido",
"pref_last365": "Last year",
"pref_last90": "\u00daltimos 90 dias",
diff --git a/frontend/src/i18n/ro_RO/index.js b/frontend/src/i18n/ro_RO/index.js
index c3b214cff8..62fe6268df 100644
--- a/frontend/src/i18n/ro_RO/index.js
+++ b/frontend/src/i18n/ro_RO/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Depozit nou",
"newWithdrawal": "Cheltuieli noi",
"bills_paid": "Facturile pl\u0103tite",
+ "left_to_spend": "Ramas de cheltuit",
+ "no_budget": "(nici un buget)",
+ "budgeted": "Bugetat",
+ "spent": "Cheltuit",
+ "no_bill": "(f\u0103r\u0103 factur\u0103)",
"rule_trigger_source_account_starts_choice": "Numele contului surs\u0103 \u00eencepe cu..",
"rule_trigger_source_account_ends_choice": "Numele contului surs\u0103 se termin\u0103 cu..",
"rule_trigger_source_account_is_choice": "Numele contului surs\u0103 este..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subscriptions",
"welcome_back": "Ce se red\u0103?",
"bills_to_pay": "Facturile de plat\u0103",
- "left_to_spend": "Ramas de cheltuit",
"net_worth": "Valoarea net\u0103",
"pref_last365": "Last year",
"pref_last90": "Last 90 days",
diff --git a/frontend/src/i18n/ru_RU/index.js b/frontend/src/i18n/ru_RU/index.js
index 53898e4f21..ca053a15aa 100644
--- a/frontend/src/i18n/ru_RU/index.js
+++ b/frontend/src/i18n/ru_RU/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "\u041d\u043e\u0432\u044b\u0439 \u0434\u043e\u0445\u043e\u0434",
"newWithdrawal": "\u041d\u043e\u0432\u044b\u0439 \u0440\u0430\u0441\u0445\u043e\u0434",
"bills_paid": "\u041e\u043f\u043b\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0441\u0447\u0435\u0442\u0430",
+ "left_to_spend": "\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c",
+ "no_budget": "(\u0432\u043d\u0435 \u0431\u044e\u0434\u0436\u0435\u0442\u0430)",
+ "budgeted": "\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432 \u0431\u044e\u0434\u0436\u0435\u0442\u0435",
+ "spent": "\u0420\u0430\u0441\u0445\u043e\u0434",
+ "no_bill": "(\u043d\u0435\u0442 \u0441\u0447\u0451\u0442\u0430 \u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u0443)",
"rule_trigger_source_account_starts_choice": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0430-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441..",
"rule_trigger_source_account_ends_choice": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0430-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430..",
"rule_trigger_source_account_is_choice": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0430-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subscriptions",
"welcome_back": "\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043c\u043e\u0438\u043c\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u0430\u043c\u0438?",
"bills_to_pay": "\u0421\u0447\u0435\u0442\u0430 \u043a \u043e\u043f\u043b\u0430\u0442\u0435",
- "left_to_spend": "\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c",
"net_worth": "\u041c\u043e\u0438 \u0441\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u044f",
"pref_last365": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0433\u043e\u0434",
"pref_last90": "Last 90 days",
diff --git a/frontend/src/i18n/sk_SK/index.js b/frontend/src/i18n/sk_SK/index.js
index e353d0b24e..29355ea3fd 100644
--- a/frontend/src/i18n/sk_SK/index.js
+++ b/frontend/src/i18n/sk_SK/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Nov\u00fd vklad",
"newWithdrawal": "Nov\u00fd v\u00fddavok",
"bills_paid": "Zaplaten\u00e9 \u00fa\u010dty",
+ "left_to_spend": "Zost\u00e1va k \u00fatrate",
+ "no_budget": "(\u017eiadny rozpo\u010det)",
+ "budgeted": "Rozpo\u010dtovan\u00e9",
+ "spent": "Utraten\u00e9",
+ "no_bill": "(\u017eiadny \u00fa\u010det)",
"rule_trigger_source_account_starts_choice": "N\u00e1zov zdrojov\u00e9ho \u00fa\u010dtu za\u010d\u00edna..",
"rule_trigger_source_account_ends_choice": "N\u00e1zov zdrojov\u00e9ho \u00fa\u010dtu kon\u010d\u00ed..",
"rule_trigger_source_account_is_choice": "N\u00e1zov zdrojov\u00e9ho \u00fa\u010dtu je..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subscriptions",
"welcome_back": "Ako to ide?",
"bills_to_pay": "\u00da\u010dty na \u00fahradu",
- "left_to_spend": "Zost\u00e1va k \u00fatrate",
"net_worth": "\u010cist\u00e9 imanie",
"pref_last365": "Last year",
"pref_last90": "Last 90 days",
diff --git a/frontend/src/i18n/sv_SE/index.js b/frontend/src/i18n/sv_SE/index.js
index b23ffdc4aa..b847bcf12f 100644
--- a/frontend/src/i18n/sv_SE/index.js
+++ b/frontend/src/i18n/sv_SE/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Ny ins\u00e4ttning",
"newWithdrawal": "Ny utgift",
"bills_paid": "Notor betalda",
+ "left_to_spend": "\u00c5terst\u00e5r att spendera",
+ "no_budget": "(ingen budget)",
+ "budgeted": "Budgeterat",
+ "spent": "Spenderat",
+ "no_bill": "(ingen r\u00e4kning)",
"rule_trigger_source_account_starts_choice": "K\u00e4llkontonamn b\u00f6rjar med..",
"rule_trigger_source_account_ends_choice": "K\u00e4llkontonamn slutar med..",
"rule_trigger_source_account_is_choice": "K\u00e4llkontonamn \u00e4r..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Prenumerationer",
"welcome_back": "Vad spelas?",
"bills_to_pay": "Notor att betala",
- "left_to_spend": "\u00c5terst\u00e5r att spendera",
"net_worth": "Nettof\u00f6rm\u00f6genhet",
"pref_last365": "F\u00f6reg\u00e5ende \u00e5r",
"pref_last90": "Senaste 90 dagarna",
diff --git a/frontend/src/i18n/vi_VN/index.js b/frontend/src/i18n/vi_VN/index.js
index d7afd66d9c..eb364ed71f 100644
--- a/frontend/src/i18n/vi_VN/index.js
+++ b/frontend/src/i18n/vi_VN/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "Ti\u1ec1n g\u1eedi m\u1edbi",
"newWithdrawal": "Chi ph\u00ed m\u1edbi",
"bills_paid": "H\u00f3a \u0111\u01a1n thanh to\u00e1n",
+ "left_to_spend": "C\u00f2n l\u1ea1i \u0111\u1ec3 chi ti\u00eau",
+ "no_budget": "(kh\u00f4ng c\u00f3 ng\u00e2n s\u00e1ch)",
+ "budgeted": "Ng\u00e2n s\u00e1ch",
+ "spent": "\u0110\u00e3 chi",
+ "no_bill": "(no bill)",
"rule_trigger_source_account_starts_choice": "Source account name starts with..",
"rule_trigger_source_account_ends_choice": "Source account name ends with..",
"rule_trigger_source_account_is_choice": "Source account name is..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subscriptions",
"welcome_back": "Ch\u00e0o m\u1eebng tr\u1edf l\u1ea1i?",
"bills_to_pay": "H\u00f3a \u0111\u01a1n ph\u1ea3i tr\u1ea3",
- "left_to_spend": "C\u00f2n l\u1ea1i \u0111\u1ec3 chi ti\u00eau",
"net_worth": "T\u00e0i s\u1ea3n th\u1ef1c",
"pref_last365": "N\u0103m tr\u01b0\u1edbc",
"pref_last90": "90 ng\u00e0y cu\u1ed1i",
diff --git a/frontend/src/i18n/zh_CN/index.js b/frontend/src/i18n/zh_CN/index.js
index 7f3c1332b1..fc85f844b9 100644
--- a/frontend/src/i18n/zh_CN/index.js
+++ b/frontend/src/i18n/zh_CN/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "\u65b0\u6536\u5165",
"newWithdrawal": "\u65b0\u652f\u51fa",
"bills_paid": "\u5df2\u4ed8\u8d26\u5355",
+ "left_to_spend": "\u5269\u4f59\u652f\u51fa",
+ "no_budget": "(\u65e0\u9884\u7b97)",
+ "budgeted": "\u9884\u7b97\u4e0a\u9650",
+ "spent": "\u652f\u51fa",
+ "no_bill": "(\u65e0\u8d26\u5355)",
"rule_trigger_source_account_starts_choice": "\u6765\u6e90\u8d26\u6237\u540d\u79f0\u5f00\u5934\u4e3a...",
"rule_trigger_source_account_ends_choice": "\u6765\u6e90\u8d26\u6237\u7ed3\u5c3e\u4e3a\u2026",
"rule_trigger_source_account_is_choice": "\u6765\u6e90\u8d26\u6237\u540d\u79f0\u4e3a...",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subscriptions",
"welcome_back": "\u4eca\u5929\u7406\u8d22\u4e86\u5417\uff1f",
"bills_to_pay": "\u5f85\u4ed8\u8d26\u5355",
- "left_to_spend": "\u5269\u4f59\u652f\u51fa",
"net_worth": "\u51c0\u8d44\u4ea7",
"pref_last365": "\u6700\u8fd1\u4e00\u5e74",
"pref_last90": "\u6700\u8fd190\u5929",
diff --git a/frontend/src/i18n/zh_TW/index.js b/frontend/src/i18n/zh_TW/index.js
index 9b3ca30d1b..130d976bd0 100644
--- a/frontend/src/i18n/zh_TW/index.js
+++ b/frontend/src/i18n/zh_TW/index.js
@@ -52,6 +52,11 @@ export default {
"newDeposit": "\u65b0\u5b58\u6b3e",
"newWithdrawal": "\u65b0\u652f\u51fa",
"bills_paid": "\u5df2\u7e73\u5e33\u55ae",
+ "left_to_spend": "\u5269\u9918\u53ef\u82b1\u8cbb",
+ "no_budget": "(\u7121\u9810\u7b97)",
+ "budgeted": "\u5df2\u5217\u5165\u9810\u7b97",
+ "spent": "\u652f\u51fa",
+ "no_bill": "(no bill)",
"rule_trigger_source_account_starts_choice": "Source account name starts with..",
"rule_trigger_source_account_ends_choice": "Source account name ends with..",
"rule_trigger_source_account_is_choice": "Source account name is..",
@@ -187,7 +192,6 @@ export default {
"subscriptions": "Subscriptions",
"welcome_back": "What's playing?",
"bills_to_pay": "\u5f85\u4ed8\u5e33\u55ae",
- "left_to_spend": "\u5269\u9918\u53ef\u82b1\u8cbb",
"net_worth": "\u6de8\u503c",
"pref_last365": "Last year",
"pref_last90": "Last 90 days",
diff --git a/frontend/src/pages/dashboard/Dashboard.vue b/frontend/src/pages/dashboard/Dashboard.vue
index 28b89956a2..4835e58ec3 100644
--- a/frontend/src/pages/dashboard/Dashboard.vue
+++ b/frontend/src/pages/dashboard/Dashboard.vue
@@ -30,7 +30,7 @@
- TODO net worth insight
+
@@ -89,10 +89,12 @@