Merge branch 'release/5.6.6'

This commit is contained in:
James Cole 2021-12-10 19:26:29 +01:00
commit b592528318
106 changed files with 1225 additions and 969 deletions

View File

@ -18,4 +18,4 @@ jobs:
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

View File

@ -75,6 +75,7 @@ class DestroyController extends Controller
$this->repository->destroyGroup($transactionGroup);
// trigger just after destruction
event(new DestroyedTransactionGroup($transactionGroup));
app('preferences')->mark();
return response()->json([], 204);
}

View File

@ -143,9 +143,9 @@ class EditController extends Controller
'BIC' => $repository->getMetaValue($account, 'BIC'),
'opening_balance_date' => $openingBalanceDate,
'liability_type_id' => $account->account_type_id,
'opening_balance' => number_format((float)$openingBalanceAmount, $currency->decimal_places),
'opening_balance' => number_format((float)$openingBalanceAmount, $currency->decimal_places,'.',''),
'liability_direction' => $this->repository->getMetaValue($account, 'liability_direction'),
'virtual_balance' => number_format((float)$account->virtual_balance, $currency->decimal_places),
'virtual_balance' => number_format((float)$account->virtual_balance, $currency->decimal_places,'.',''),
'currency_id' => $currency->id,
'include_net_worth' => $includeNetWorth,
'interest' => $repository->getMetaValue($account, 'interest'),

View File

@ -103,7 +103,7 @@ class EditController extends Controller
];
if ($autoBudget) {
$amount = $hasOldInput ? $request->old('auto_budget_amount') : $autoBudget->amount;
$preFilled['auto_budget_amount'] = number_format((float)$amount, $autoBudget->transactionCurrency->decimal_places);
$preFilled['auto_budget_amount'] = number_format((float)$amount, $autoBudget->transactionCurrency->decimal_places, '.', '');
}
// put previous url in session if not redirect from store (not "return_to_edit").

View File

@ -87,7 +87,7 @@ class EditController extends Controller
$preFilled = ['name' => $piggyBank->name,
'account_id' => $piggyBank->account_id,
'targetamount' => number_format((float)$piggyBank->targetamount, $currency->decimal_places),
'targetamount' => number_format((float)$piggyBank->targetamount, $currency->decimal_places,'.',''),
'targetdate' => $targetDate,
'startdate' => $startDate,
'object_group' => $piggyBank->objectGroups->first() ? $piggyBank->objectGroups->first()->title : '',

View File

@ -146,7 +146,7 @@ class MassController extends Controller
// reverse amounts
foreach ($journals as $index => $journal) {
$journals[$index]['amount'] = number_format((float) app('steam')->positive($journal['amount']), $journal['currency_decimal_places']);
$journals[$index]['amount'] = number_format((float) app('steam')->positive($journal['amount']), $journal['currency_decimal_places'],'.','');
$journals[$index]['foreign_amount'] = null === $journal['foreign_amount'] ?
null : app('steam')->positive($journal['foreign_amount']);
}

View File

@ -484,4 +484,16 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface
return $return;
}
/**
* @inheritDoc
*/
public function countAttachments(int $journalId): int
{
/** @var TransactionJournal $journal */
$journal = $this->user->transactionJournals()->find($journalId);
return $journal->attachments()->count();
}
}

View File

@ -86,6 +86,13 @@ interface TransactionGroupRepositoryInterface
*/
public function getLocation(int $journalId): ?Location;
/**
* @param int $journalId
*
* @return int
*/
public function countAttachments(int $journalId): int;
/**
* Return object with all found meta field things as Carbon objects.
*

View File

@ -26,7 +26,11 @@ namespace FireflyIII\Support\System;
use Artisan;
use Crypt;
use FireflyIII\Exceptions\FireflyException;
use Laravel\Passport\Console\KeysCommand;
use Log;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
/**
* Class OAuthKeys
@ -62,7 +66,23 @@ class OAuthKeys
*/
public static function keysInDatabase(): bool
{
return app('fireflyconfig')->has(self::PRIVATE_KEY) && app('fireflyconfig')->has(self::PUBLIC_KEY);
$privateKey = '';
$publicKey = '';
// better check if keys are in the database:
if (app('fireflyconfig')->has(self::PRIVATE_KEY) && app('fireflyconfig')->has(self::PUBLIC_KEY)) {
try {
$privateKey = (string)app('fireflyconfig')->get(self::PRIVATE_KEY)?->data;
$publicKey = (string)app('fireflyconfig')->get(self::PUBLIC_KEY)?->data;
} catch (ContainerExceptionInterface | NotFoundExceptionInterface | FireflyException $e) {
Log::error(sprintf('Could not validate keysInDatabase(): %s', $e->getMessage()));
Log::error($e->getTraceAsString());
}
}
if ('' !== $privateKey && '' !== $publicKey) {
return true;
}
return false;
}
/**
@ -101,8 +121,10 @@ class OAuthKeys
*/
public static function restoreKeysFromDB(): void
{
$privateContent = Crypt::decrypt(app('fireflyconfig')->get(self::PRIVATE_KEY)->data);
$publicContent = Crypt::decrypt(app('fireflyconfig')->get(self::PUBLIC_KEY)->data);
$privateKey = (string)app('fireflyconfig')->get(self::PRIVATE_KEY)?->data;
$publicKey = (string)app('fireflyconfig')->get(self::PUBLIC_KEY)?->data;
$privateContent = Crypt::decrypt($privateKey);
$publicContent = Crypt::decrypt($publicKey);
$private = storage_path('oauth-private.key');
$public = storage_path('oauth-public.key');
file_put_contents($private, $privateContent);

View File

@ -212,6 +212,8 @@ class TransactionGroupTransformer extends AbstractTransformer
'longitude' => $longitude,
'latitude' => $latitude,
'zoom_level' => $zoomLevel,
'has_attachments' => $this->hasAttachments((int)$row['transaction_journal_id']),
];
}
@ -248,6 +250,16 @@ class TransactionGroupTransformer extends AbstractTransformer
return $this->groupRepos->getLocation($journalId);
}
/**
* @param int $journalId
*
* @return bool
*/
private function hasAttachments(int $journalId): bool
{
return $this->groupRepos->countAttachments($journalId) > 0;
}
/**
* @param array $array
* @param string $key

View File

@ -2,6 +2,20 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## 5.6.6 - 2021-12-10
### Fixed
- Cache is flushed after API action to delete a transaction.
- Stricter validation of OAuth key existence.
- [Issue 5371](https://github.com/firefly-iii/firefly-iii/issues/5371), thanks to @weimdall fixes budget issue.
- Various v2 layout issues fixed: [issue 5375](https://github.com/firefly-iii/firefly-iii/issues/5375) [issue 5279](https://github.com/firefly-iii/firefly-iii/issues/5279) [issue 5108](https://github.com/firefly-iii/firefly-iii/issues/5108) [issue 5352](https://github.com/firefly-iii/firefly-iii/issues/5352) [issue 5335](https://github.com/firefly-iii/firefly-iii/issues/5335) [issue 5327](https://github.com/firefly-iii/firefly-iii/issues/5327) [issue 5296](https://github.com/firefly-iii/firefly-iii/issues/5296), thanks for reporting!
### API
- Add field `has_attachments` to transaction splits
### Security
- CSRF issue found by the good people of huntr.dev (@418sec)
## 5.6.5 - 2021-11-25
### Fixed

View File

@ -94,9 +94,9 @@
"guzzlehttp/guzzle": "^7.4",
"jc5/google2fa-laravel": "2.0.6",
"jc5/recovery": "^2",
"laravel/framework": "^8.69",
"laravel/framework": "^8.74",
"laravel/passport": "10.*",
"laravel/ui": "^3.3",
"laravel/ui": "^3.4",
"laravelcollective/html": "6.*",
"league/commonmark": "2.*",
"league/csv": "^9.7",

944
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -101,8 +101,8 @@ return [
'webhooks' => true,
'handle_debts' => true,
],
'version' => '5.6.5',
'api_version' => '1.5.4',
'version' => '5.6.6',
'api_version' => '1.5.5',
'db_version' => 18,
// generic settings

View File

@ -11,19 +11,19 @@
},
"devDependencies": {
"axios": "^0.21",
"date-fns": "^2.26.0",
"date-fns": "^2.27.0",
"laravel-mix": "^6",
"lodash": "^4.17.21",
"lodash.clonedeep": "^4.5.0",
"postcss": "^8.3.11",
"postcss": "^8.4.4",
"resolve-url-loader": "^4.0.0",
"sass": "^1.43.3",
"sass": "^1.44.0",
"sass-loader": "^12.2.0",
"vue-i18n": "^8.26.7",
"vue-loader": "^15",
"vue-template-compiler": "^2.6.12",
"vuex": "^3.6.2",
"webpack": "^5.64.2"
"webpack": "^5.64.4"
},
"dependencies": {
"@fortawesome/fontawesome-free": "^5.15.3",
@ -32,7 +32,7 @@
"axios-cache-adapter": "^2.7.3",
"bootstrap": "^4.6.0",
"bootstrap-vue": "^2.21.2",
"chart.js": "^3.6.0",
"chart.js": "^3.6.2",
"icheck-bootstrap": "^3.0.1",
"jquery-ui": "^1.12.1",
"leaflet": "^1.7.1",

View File

@ -275,8 +275,8 @@ export default {
this.hasAttachments = false;
},
uploadedAttachments: function (e) {
console.log('Response to event uploaded-attachments');
console.log(e);
// console.log('Response to event uploaded-attachments');
// console.log(e);
this.finishSubmission();
},
submitForm: function (e) {

View File

@ -63,7 +63,7 @@
</div>
<div class="card-footer">
<button @click="deleteAccount" class="btn btn-danger float-right" v-if="!loading && !deleting && !deleted"> {{
$t('firefly.delete_account')
$t('form.deletePermanently')
}}
</button>
</div>

View File

@ -177,13 +177,9 @@
import {mapGetters, mapMutations} from "vuex";
import Sortable from "sortablejs";
import format from "date-fns/format";
// import {setup} from 'axios-cache-adapter';
// import {cacheAdapterEnhancer} from 'axios-extensions';
import {configureAxios} from "../../shared/forageStore";
// get all and cache, dont keep the table busy.
export default {
name: "Index",
props: {

View File

@ -80,8 +80,8 @@
<script>
import TransactionListLarge from "../transactions/TransactionListLarge";
import format from "date-fns/format";
import {mapGetters} from "vuex";
import format from "date-fns/format";
import {configureAxios} from "../../shared/forageStore";
export default {
@ -147,32 +147,36 @@ export default {
this.updatePageTitle();
},
getTransactions: function () {
// console.log('getTransactions()');
if (this.showReady && !this.loading) {
// console.log('Show ready, not loading, go for download');
this.loading = true;
this.rawTransactions = [];
configureAxios().then(async (api) => {
// console.log('Now getTransactions() x Start');
let startStr = format(this.start, 'y-MM-dd');
let endStr = format(this.end, 'y-MM-dd');
this.rawTransactions = [];
let url = './api/v1/accounts/' + this.accountId + '/transactions?page=1&limit=' + this.perPage + '&start=' + startStr + '&end=' + endStr + '&cache=' + this.cacheKey;
let url = './api/v1/accounts/' + this.accountId + '/transactions?page=' + this.currentPage + '&limit=' + this.perPage + '&start=' + startStr + '&end=' + endStr + '&cache=' + this.cacheKey;
api.get(url)
.then(response => {
// console.log('Now getTransactions() DONE!');
this.total = parseInt(response.data.meta.pagination.total);
let transactions = response.data.data;
// console.log('Have downloaded ' + transactions.length + ' transactions');
// console.log(response.data);
this.rawTransactions = response.data.data;
this.loading = false;
}
);
});
}
},
jumpToPage: function (event) {
// console.log('noticed a change!');
// console.log('noticed a change in account/show!');
this.currentPage = event.page;
this.downloadTransactionList(event.page);
this.getTransactions();
},
},
watch: {

View File

@ -23,93 +23,131 @@
<Alert :message="errorMessage" type="danger"/>
<Alert :message="successMessage" type="success"/>
<form @submit="submitForm" autocomplete="off">
<div class="row">
<div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
<div class="card card-primary">
<div class="card-header">
<h3 class="card-title">
{{ $t('firefly.mandatoryFields') }}
</h3>
</div>
<div class="card-body">
<GenericTextInput :disabled="submitting" v-model="name" field-name="name" :errors="errors.name" :title="$t('form.name')"
v-on:set-field="storeField($event)"/>
<GenericCurrency :disabled="submitting" v-model="currency_id" :errors="errors.currency_id" v-on:set-field="storeField($event)"/>
<GenericTextInput :disabled="submitting" field-type="number" field-step="any" v-model="amount_min"
field-name="amount_min" :errors="errors.amount_min" :title="$t('form.amount_min')" v-on:set-field="storeField($event)"/>
<GenericTextInput :disabled="submitting" field-type="number" field-step="any" v-model="amount_max"
field-name="amount_max" :errors="errors.amount_max" :title="$t('form.amount_max')" v-on:set-field="storeField($event)"/>
<GenericTextInput :disabled="submitting" field-type="date" v-model="date" field-name="date"
:errors="errors.date" :title="$t('form.startdate')" v-on:set-field="storeField($event)"/>
<GenericTextInput :disabled="submitting" field-type="date" v-model="end_date" field-name="end_date"
:errors="errors.end_date" :title="$t('form.end_date')" v-on:set-field="storeField($event)"/>
<GenericTextInput :disabled="submitting" field-type="date" v-model="extension_date" field-name="extension_date"
:errors="errors.extension_date" :title="$t('form.extension_date')" v-on:set-field="storeField($event)"/>
<RepeatFrequencyPeriod :disabled="submitting" v-model="repeat_freq" :errors="errors.repeat_freq"
v-on:set-field="storeField($event)"/>
</div>
</div>
</div>
<div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">
{{ $t('firefly.optionalFields') }}
</h3>
</div>
<div class="card-body">
<GenericTextarea :disabled="submitting" field-name="notes" :title="$t('form.notes')" v-model="notes" :errors="errors.notes"
v-on:set-field="storeField($event)"/>
<GenericAttachments :disabled="submitting" :title="$t('form.attachments')" field-name="attachments" :errors="errors.attachments"
v-on:selected-attachments="selectedAttachments($event)"
v-on:selected-no-attachments="selectedNoAttachments($event)"
v-on:uploaded-attachments="uploadedAttachments($event)"
:upload-trigger="uploadTrigger"
:upload-object-type="uploadObjectType"
:upload-object-id="uploadObjectId"
/>
<GenericTextInput :disabled="submitting" v-model="skip" field-name="skip" :errors="errors.skip" :title="$t('form.skip')"
v-on:set-field="storeField($event)"/>
<GenericGroup :disabled="submitting" v-model="group_title" field-name="group_title" :errors="errors.group_title" :title="$t('form.object_group')"
v-on:set-field="storeField($event)"/>
</div>
</div>
</div>
<div class="col">
<!-- tabs -->
<ul class="nav nav-tabs ml-auto p-2" id="subscriptionTabs">
<li>
<li class="nav-item"><a class="nav-link active" href="#subscription" data-toggle="pill">
Subscription
</a>
</li>
<li>
<li class="nav-item"><a class="nav-link" href="#rule" data-toggle="pill">
Rule
</a>
</li>
</ul>
</div>
<div class="row">
<div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12 offset-xl-6 offset-lg-6">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-lg-6 offset-lg-6">
<button :disabled=submitting type="button" @click="submitForm" class="btn btn-success btn-block">{{
$t('firefly.store_new_bill')
}}
</button>
<div class="form-check">
<input id="createAnother" v-model="createAnother" class="form-check-input" type="checkbox">
<label class="form-check-label" for="createAnother">
<span class="small">{{ $t('firefly.create_another') }}</span>
</label>
</div>
<div class="form-check">
<input id="resetFormAfter" v-model="resetFormAfter" :disabled="!createAnother" class="form-check-input" type="checkbox">
<label class="form-check-label" for="resetFormAfter">
<span class="small">{{ $t('firefly.reset_after') }}</span>
</label>
<div class="tab-content" id="subscriptionTabContent">
<div class="tab-pane show active" id="subscription" role="tabpanel" aria-labelledby="subscription-tab">
<div class="row">
<div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
<div class="card card-primary">
<div class="card-header">
<h3 class="card-title">
{{ $t('firefly.mandatoryFields') }}
</h3>
</div>
<div class="card-body">
<GenericTextInput :disabled="submitting" v-model="name" field-name="name" :errors="errors.name" :title="$t('form.name')"
v-on:set-field="storeField($event)"/>
<GenericCurrency :disabled="submitting" v-model="currency_id" :errors="errors.currency_id" v-on:set-field="storeField($event)"/>
<GenericTextInput :disabled="submitting" field-type="number" field-step="any" v-model="amount_min"
field-name="amount_min" :errors="errors.amount_min" :title="$t('form.amount_min')" v-on:set-field="storeField($event)"/>
<GenericTextInput :disabled="submitting" field-type="number" field-step="any" v-model="amount_max"
field-name="amount_max" :errors="errors.amount_max" :title="$t('form.amount_max')" v-on:set-field="storeField($event)"/>
<GenericTextInput :disabled="submitting" field-type="date" v-model="date" field-name="date"
:errors="errors.date" :title="$t('form.startdate')" v-on:set-field="storeField($event)"/>
<GenericTextInput :disabled="submitting" field-type="date" v-model="end_date" field-name="end_date"
:errors="errors.end_date" :title="$t('form.end_date')" v-on:set-field="storeField($event)"/>
<GenericTextInput :disabled="submitting" field-type="date" v-model="extension_date" field-name="extension_date"
:errors="errors.extension_date" :title="$t('form.extension_date')" v-on:set-field="storeField($event)"/>
<RepeatFrequencyPeriod :disabled="submitting" v-model="repeat_freq" :errors="errors.repeat_freq"
v-on:set-field="storeField($event)"/>
</div>
</div>
</div>
<div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">
{{ $t('firefly.optionalFields') }}
</h3>
</div>
<div class="card-body">
<GenericTextarea :disabled="submitting" field-name="notes" :title="$t('form.notes')" v-model="notes" :errors="errors.notes"
v-on:set-field="storeField($event)"/>
<GenericAttachments :disabled="submitting" :title="$t('form.attachments')" field-name="attachments" :errors="errors.attachments"
v-on:selected-attachments="selectedAttachments($event)"
v-on:selected-no-attachments="selectedNoAttachments($event)"
v-on:uploaded-attachments="uploadedAttachments($event)"
:upload-trigger="uploadTrigger"
:upload-object-type="uploadObjectType"
:upload-object-id="uploadObjectId"
/>
<GenericTextInput :disabled="submitting" v-model="skip" field-name="skip" :errors="errors.skip" :title="$t('form.skip')"
v-on:set-field="storeField($event)"/>
<GenericGroup :disabled="submitting" v-model="group_title" field-name="group_title" :errors="errors.group_title"
:title="$t('form.object_group')"
v-on:set-field="storeField($event)"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12 offset-xl-6 offset-lg-6">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-lg-6 offset-lg-6">
<button :disabled=submitting type="button" @click="submitForm" class="btn btn-success btn-block">{{
$t('firefly.store_new_bill')
}}
</button>
<div class="form-check">
<input id="createAnother" v-model="createAnother" class="form-check-input" type="checkbox">
<label class="form-check-label" for="createAnother">
<span class="small">{{ $t('firefly.create_another') }}</span>
</label>
</div>
<div class="form-check">
<input id="resetFormAfter" v-model="resetFormAfter" :disabled="!createAnother" class="form-check-input" type="checkbox">
<label class="form-check-label" for="resetFormAfter">
<span class="small">{{ $t('firefly.reset_after') }}</span>
</label>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane show" id="rule" role="tabpanel" aria-labelledby="rule-tab">
<div class="row">
<div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
<div class="card card-primary">
<div class="card-header">
<h3 class="card-title">
Title
</h3>
</div>
<div class="card-body">
<p>
In the future here you can set rule info for the new subscription.
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
@ -226,7 +264,7 @@ export default {
this.uploadObjectId = this.returnedId;
this.uploadTrigger = true;
}
if(!this.hasAttachments) {
if (!this.hasAttachments) {
this.finishSubmission();
}
})
@ -236,10 +274,10 @@ export default {
// display errors!
});
},
uploadedAttachments: function(e) {
uploadedAttachments: function (e) {
this.finishSubmission();
},
finishSubmission: function() {
finishSubmission: function () {
this.successMessage = this.$t('firefly.stored_new_bill_js', {ID: this.returnedId, name: this.returnedTitle});
// stay here is false?
if (false === this.createAnother) {

View File

@ -269,10 +269,10 @@ export default {
};
},
downloadBills: function (page) {
console.log('downloadBills');
console.log(this.indexReady);
console.log(this.loading);
console.log(this.downloaded);
// console.log('downloadBills');
// console.log(this.indexReady);
// console.log(this.loading);
// console.log(this.downloaded);
this.resetGroups();
// console.log('getAccountList()');
if (this.indexReady && !this.loading && !this.downloaded) {

View File

@ -31,8 +31,6 @@
<span v-if="budgetLimit.pctGreen > 35">
{{ $t('firefly.spent_x_of_y', {amount: Intl.NumberFormat(locale, {style: 'currency', currency: budgetLimit.currency_code}).format(budgetLimit.spent), total: Intl.NumberFormat(locale, {style: 'currency', currency: budgetLimit.currency_code}).format(budgetLimit.amount)}) }}
</span>
</div>
<div :aria-valuenow="budgetLimit.pctOrange" :style="'width: '+ budgetLimit.pctOrange + '%;'"

View File

@ -214,26 +214,31 @@ export default {
let pctGreen = 0;
let pctOrange = 0;
let pctRed = 0;
console.log('Collected "' + period + '" budget limit #' + currentId + ' (part of budget #' + budgetId + ')');
console.log('Spent ' + spentFloatPos + ' of ' + amount);
//console.log('Collected "' + period + '" budget limit #' + currentId + ' (part of budget #' + budgetId + ')');
// console.log('Spent ' + spentFloatPos + ' of ' + amount);
// remove budget info from rawBudgets if it's there:
this.filterBudgets(budgetId, currencyId);
let name = this.budgets[current.attributes.budget_id].name;
// spent within budget:
if (0.0 !== spentFloat && spentFloatPos < amount) {
// console.log('Spent ' + name + ' in budget');
pctGreen = (spentFloatPos / amount) * 100;
// console.log('pctGreen is ' + pctGreen);
}
// spent over budget
if (0.0 !== spentFloatPos && spentFloatPos > amount) {
pctOrange = (spentFloatPos / amount) * 100;
//console.log('Spent ' + name + ' OVER budget');
pctOrange = (amount / spentFloatPos) * 100;
pctRed = 100 - pctOrange;
//console.log('orange is ' + pctOrange);
//console.log('red is ' + pctRed);
}
// spent exactly on budget
if (0.0 !== spentFloatPos && spentFloatPos === amount) {
pctOrange = 0;
pctRed = 100;
pctOrange = 100;
pctRed = 0;
}
let obj = {

View File

@ -97,22 +97,22 @@ export default {
// });
// new code
console.log('start of new');
// console.log('start of new');
let files = this.$refs.att.files;
this.uploads = files.length;
// loop all files and create attachments.
for (let i in files) {
if (files.hasOwnProperty(i) && /^0$|^[1-9]\d*$/.test(i) && i <= 4294967294) {
console.log('Now at file ' + (parseInt(i) + 1) + ' / ' + files.length);
// console.log('Now at file ' + (parseInt(i) + 1) + ' / ' + files.length);
// read file into file reader:
let current = files[i];
let fileReader = new FileReader();
let theParent = this; // dont ask me why i need to do this.
fileReader.onloadend = evt => {
if (evt.target.readyState === FileReader.DONE) {
console.log('I am done reading file ' + (parseInt(i) + 1));
// console.log('I am done reading file ' + (parseInt(i) + 1));
this.createAttachment(current.name).then(response => {
console.log('Created attachment. Now upload (1)');
// console.log('Created attachment. Now upload (1)');
return theParent.uploadAttachment(response.data.data.id, new Blob([evt.target.result]));
}).then(theParent.countAttachment);
}
@ -121,7 +121,7 @@ export default {
}
}
if (0 === files.length) {
console.log('No files to upload. Emit event!');
// console.log('No files to upload. Emit event!');
this.$emit('uploaded-attachments', this.transaction_journal_id);
}
// Promise.all(promises).then(response => {
@ -138,15 +138,15 @@ export default {
methods: {
countAttachment: function () {
this.uploaded++;
console.log('Uploaded ' + this.uploaded + ' / ' + this.uploads);
// console.log('Uploaded ' + this.uploaded + ' / ' + this.uploads);
if (this.uploaded >= this.uploads) {
console.log('All files uploaded. Emit event for ' + this.uploadObjectId);
// console.log('All files uploaded. Emit event for ' + this.uploadObjectId);
this.$emit('uploaded-attachments', this.uploadObjectId);
}
},
uploadAttachment: function (attachmentId, data) {
this.created++;
console.log('Now in uploadAttachment()');
// console.log('Now in uploadAttachment()');
const uploadUri = './api/v1/attachments/' + attachmentId + '/upload';
return axios.post(uploadUri, data)
},

View File

@ -20,7 +20,7 @@
const lodashClonedeep = require('lodash.clonedeep');
import {getDefaultTransaction, getDefaultErrors} from '../../../../shared/transactions';
import {getDefaultErrors, getDefaultTransaction} from '../../../../shared/transactions';
// initial state
const state = () => ({
@ -100,6 +100,7 @@ const mutations = {
state.transactions[payload.index].errors = lodashClonedeep(state.defaultErrors);
},
resetTransactions(state) {
// console.log('Store: Record call to resetTransactions :(');
state.transactions = [];
},
setGroupTitle(state, payload) {
@ -109,12 +110,13 @@ const mutations = {
state.customDateFields = payload;
},
deleteTransaction(state, payload) {
// console.log('Record call to deleteTransaction!');
state.transactions.splice(payload.index, 1);
// console.log('Deleted transaction ' + payload.index);
// console.log(state.transactions);
if (0 === state.transactions.length) {
// if (0 === state.transactions.length) {
// console.log('array is empty!');
}
// }
},
setTransactionType(state, transactionType) {
state.transactionType = transactionType;

View File

@ -23,7 +23,7 @@
<alert :message="errorMessage" type="danger"/>
<alert :message="successMessage" type="success"/>
<form @submit="submitTransaction" autocomplete="off">
<SplitPills :transactions="transactions" :count="transactions.length"/>
<SplitPills ref="pills" :transactions="transactions" :count="transactions.length"/>
<div class="tab-content">
<SplitForm
v-for="(transaction, index) in this.transactions"
@ -71,7 +71,7 @@
&nbsp;
</div>
<button type="button" class="btn btn-outline-primary btn-block" @click="addTransactionArray"><span class="far fa-clone"></span> {{
$t('firefly.add_another_split')
$t('firefly.add_another_split')
}}
</button>
</div>
@ -221,6 +221,7 @@ export default {
]
),
addTransactionArray: function (event) {
// console.log('Record call to addTransactionArray');
event.preventDefault();
this.addTransaction();
},
@ -228,7 +229,9 @@ export default {
* Removes a split from the array.
*/
removeTransaction: function (payload) {
// console.log('Record call to removeTransaction');
// console.log('Triggered to remove transaction ' + payload.index);
window.$('#tab_split_' + (payload.index - 1)).click();
this.$store.commit('transactions/create/deleteTransaction', payload);
},
submitData: function (url, data) {
@ -443,6 +446,10 @@ export default {
},
storeField: function (payload) {
this.updateField(payload);
if('description' === payload.field) {
// jump to account
this.$refs.splitForms[payload.index].$refs.sourceAccount.giveFocus();
}
},
storeDate: function (payload) {
this.date = payload.date;

View File

@ -153,7 +153,7 @@ export default {
this.getTransactionList();
},
jumpToPage: function (event) {
// console.log('noticed a change!');
// console.log('noticed a change in transactions/index.vue!');
this.currentPage = event.page;
this.downloadTransactionList(event.page);
},

View File

@ -209,6 +209,7 @@
<TransactionTags
v-model="transaction.tags"
v-on="$listeners"
ref="tags"
:errors="transaction.errors.tags"
:index="index"
/>
@ -381,12 +382,13 @@ export default {
methods: {
removeTransaction: function () {
// console.log('Will remove transaction ' + this.index);
this.$emit('remove-transaction', {index: this.index});
},
triggerNextAccount: function(e) {
//alert(e);
if('source' === e) {
console.log('Jump to destination!');
// console.log('Jump to destination!');
this.$refs.destinationAccount.giveFocus();
}
}

View File

@ -19,17 +19,22 @@
-->
<template>
<div v-if="transactions.length > 1" class="row">
<div class="col">
<!-- tabs -->
<ul class="nav nav-pills ml-auto p-2" id="transactionTabs">
<li v-for="(transaction, index) in this.transactions" class="nav-item"><a :class="'nav-link' + (0 === index ? ' active' : '')"
:href="'#split_' + index"
data-toggle="pill">
<span v-if="'' !== transaction.description">{{ transaction.description }}</span>
<span v-if="'' === transaction.description">Split {{ index + 1 }}</span>
</a></li>
</ul>
<div>
<span>Length: {{ this.transactions.length }}</span>
<div v-if="transactions.length > 1" class="row">
<div class="col">
<!-- tabs -->
<ul class="nav nav-pills ml-auto p-2" id="transactionTabs">
<li v-for="(transaction, index) in this.transactions" class="nav-item"><a :class="'nav-link' + (0 === index ? ' active' : '')"
:href="'#split_' + index"
:id="'tab_split_' + index"
data-toggle="pill">
<span v-if="'' !== transaction.description">{{ transaction.description }}</span>
<span v-if="'' === transaction.description">Split {{ index + 1 }}</span>
</a></li>
</ul>
</div>
</div>
</div>
</template>
@ -41,7 +46,7 @@ export default {
transactions: {
type: Array,
required: true,
default: function() {
default: function () {
return [];
}
},

View File

@ -116,15 +116,22 @@ export default {
// console.log('TransactionAccount::created() direction=' + this.direction + ', type=' + this.transactionType + ' , name="' + this.accountName + '"');
this.selectedAccountTrigger = true;
},
mounted: function () {
this.$nextTick(function () {
if (0 === this.index) {
this.$refs.inputThing.$refs.input.tabIndex = 2;
}
})
},
methods: {
getACURL: function (types, query) {
return './api/v1/autocomplete/accounts?types=' + types.join(',') + '&query=' + query;
},
giveFocus: function() {
console.log('I want focus! now OK: ' + this.direction + ' l: ' + this.accounts.length);
giveFocus: function () {
//console.log('I want focus! now OK: ' + this.direction + ' l: ' + this.accounts.length);
//console.log(this.$refs.inputThing.$refs.input.value);
this.$refs.inputThing.$refs.input.focus();
console.log(this.$refs.inputThing.isFocused);
//console.log(this.$refs.inputThing.isFocused);
},
userSelectedAccount: function (event) {
// console.log('userSelectedAccount!');

View File

@ -69,11 +69,18 @@ export default {
this.transactionAmount = this.formatNumber(this.amount);
}
},
mounted: function () {
this.$nextTick(function () {
if (0 === this.index) {
this.$refs.input.tabIndex = 3;
}
})
},
methods: {
formatNumber(str) {
return parseFloat(str).toFixed(this.fractionDigits);
},
giveFocus: function() {
giveFocus: function () {
this.$refs.input.focus();
},
},

View File

@ -52,6 +52,11 @@ export default {
bill: this.value,
}
},
mounted: function () {
this.$nextTick(function () {
this.$refs.bill.tabIndex = 9;
})
},
created() {
this.collectData();
},

View File

@ -52,6 +52,11 @@ export default {
emitEvent: true
}
},
mounted: function () {
this.$nextTick(function () {
this.$refs.budget.tabIndex = 8;
})
},
created() {
this.collectData();
},

View File

@ -35,6 +35,7 @@
inputName="category[]"
@hit="selectedCategory = $event"
@input="lookupCategory"
ref="input"
>
<template slot="append">
<div class="input-group-append">
@ -64,7 +65,11 @@ export default {
category: this.value
}
},
mounted: function () {
this.$nextTick(function () {
this.$refs.input.$refs.input.tabIndex = 10;
})
},
created() {
//console.log('Created category(' + this.index + ') "' + this.value + '"');
// initial list of accounts:

View File

@ -67,7 +67,14 @@ export default {
let parts = this.date.split('T');
this.dateStr = parts[0];
this.timeStr = parts[1];
},
mounted: function () {
if (0 === this.index) {
this.$nextTick(function () {
this.$refs.date.tabIndex = 6;
this.$refs.time.tabIndex = 7;
});
}
},
data() {
return {

View File

@ -29,6 +29,8 @@
:serializer="item => item.description"
:showOnFocus=true
autofocus
tabindex="1"
ref="autoComplete"
inputName="description[]"
@input="lookupDescription"
>
@ -65,6 +67,11 @@ export default {
.then(response => {
this.descriptions = response.data;
this.initialSet = response.data;
if(0===this.index) {
this.$refs.autoComplete.$refs.input.tabIndex = 1;
}
});
},

View File

@ -31,6 +31,7 @@
autocomplete="off"
name="foreign_amount[]"
type="number"
ref="input"
>
</div>
<span v-if="errors.length > 0">
@ -66,6 +67,11 @@ export default {
this.amount = this.formatNumber(this.amount);
}
},
mounted: function () {
this.$nextTick(function () {
this.$refs.input.tabIndex = 5;
})
},
methods: {
formatNumber(str) {
return parseFloat(str).toFixed(this.fractionDigits);

View File

@ -23,7 +23,7 @@
<div v-if="isVisible" class="form-group">
<div class="text-xs">&nbsp;</div>
<div class="input-group">
<select v-model="selectedCurrency" class="form-control" name="foreign_currency_id[]">
<select v-model="selectedCurrency" class="form-control" ref="input" name="foreign_currency_id[]">
<option v-for="currency in selectableCurrencies" :label="currency.name" :value="currency.id">{{ currency.name }}</option>
</select>
</div>
@ -77,6 +77,11 @@ export default {
// console.log('Created TransactionForeignCurrency');
this.getAllCurrencies();
},
mounted: function () {
this.$nextTick(function () {
this.$refs.input.tabIndex = 4;
})
},
methods: {
lockCurrency: function () {
// console.log('Lock currency (' + this.transactionType + ')');

View File

@ -61,6 +61,7 @@
<template #cell(description)="data">
<span class="fa fa-spinner fa-spin" v-if="data.item.dummy"></span>
<span v-if="!data.item.split">
<span v-if="data.item.hasAttachments" class="fas fa-paperclip"></span>
<a :href="'./transactions/show/' + data.item.id" :title="data.value">
{{ data.item.description }}
</a>
@ -68,12 +69,13 @@
<span v-if="data.item.split">
<!-- title first -->
<span class="fas fa-angle-right" @click="toggleCollapse(data.item.id)" style="cursor: pointer;"></span>
<span v-if="data.item.hasAttachments" class="fas fa-paperclip"></span>
<a :href="'./transactions/show/' + data.item.id" :title="data.value">
{{ data.item.description }}
</a><br />
</a><br/>
<span v-if="!data.item.collapsed">
<span v-for="(split, index) in data.item.splits" v-bind:key="index">
&nbsp; &nbsp; {{ split.description }}<br />
&nbsp; &nbsp; {{ split.description }}<br/>
</span>
</span>
</span>
@ -89,11 +91,11 @@
<span :class="'text-muted ' + (!data.item.collapsed ? 'font-weight-bold' : '')" v-if="'transfer' === data.item.type.toLowerCase()">
{{ Intl.NumberFormat(locale, {style: 'currency', currency: data.item.currency_code}).format(data.item.amount) }}
</span>
<br />
<br/>
<!-- splits -->
<span v-if="!data.item.collapsed">
<span v-for="(split, index) in data.item.splits" v-bind:key="index">
{{ Intl.NumberFormat(locale, {style: 'currency', currency: split.currency_code}).format(split.amount) }}<br />
{{ Intl.NumberFormat(locale, {style: 'currency', currency: split.currency_code}).format(split.amount) }}<br/>
</span>
</span>
</template>
@ -103,29 +105,31 @@
<template #cell(source_account)="data">
<!-- extra break for splits -->
<span v-if="true===data.item.split && !data.item.collapsed">
<br />
<br/>
</span>
<em v-if="true===data.item.split && data.item.collapsed">
...
</em>
<!-- loop all accounts, hidden if split -->
<span v-for="(split, index) in data.item.splits" v-bind:key="index" v-if="false===data.item.split || (true===data.item.split && !data.item.collapsed)">
<a :href="'./accounts/show/' + split.source_id" :title="split.source_name">{{ split.source_name }}</a><br />
<span v-for="(split, index) in data.item.splits" v-bind:key="index"
v-if="false===data.item.split || (true===data.item.split && !data.item.collapsed)">
<a :href="'./accounts/show/' + split.source_id" :title="split.source_name">{{ split.source_name }}</a><br/>
</span>
</template>
<template #cell(destination_account)="data">
<!-- extra break for splits -->
<span v-if="true===data.item.split && !data.item.collapsed">
<br />
<br/>
</span>
<em v-if="true===data.item.split && data.item.collapsed">
...
</em>
<!-- loop all accounts, hidden if split -->
<span v-for="(split, index) in data.item.splits" v-bind:key="index" v-if="false===data.item.split || (true===data.item.split && !data.item.collapsed)">
<a :href="'./accounts/show/' + split.destination_id" :title="split.destination_name">{{ split.destination_name }}</a><br />
<span v-for="(split, index) in data.item.splits" v-bind:key="index"
v-if="false===data.item.split || (true===data.item.split && !data.item.collapsed)">
<a :href="'./accounts/show/' + split.destination_id" :title="split.destination_name">{{ split.destination_name }}</a><br/>
</span>
</template>
<template #cell(menu)="data">
@ -149,15 +153,16 @@
<template #cell(category_name)="data">
<!-- extra break for splits -->
<span v-if="true===data.item.split && !data.item.collapsed">
<br />
<br/>
</span>
<em v-if="true===data.item.split && data.item.collapsed">
...
</em>
<!-- loop all categories, hidden if split -->
<span v-for="(split, index) in data.item.splits" v-bind:key="index" v-if="false===data.item.split || (true===data.item.split && !data.item.collapsed)">
<a :href="'./categories/show/' + split.category_id" :title="split.category_name">{{ split.category_name }}</a><br />
<span v-for="(split, index) in data.item.splits" v-bind:key="index"
v-if="false===data.item.split || (true===data.item.split && !data.item.collapsed)">
<a :href="'./categories/show/' + split.category_id" :title="split.category_name">{{ split.category_name }}</a><br/>
</span>
</template>
</BTable>
@ -220,12 +225,12 @@ export default {
this.$emit('jump-page', {page: value});
},
entries: function (value) {
console.log('detected new transactions!');
// console.log('detected new transactions! (' + value.length + ')');
this.parseTransactions();
},
value: function(value) {
console.log('Watch value!');
}
// value: function (value) {
// // console.log('Watch value!');
// }
},
methods: {
...mapMutations('root', ['refreshCacheKey',]),
@ -234,12 +239,12 @@ export default {
// console.log('Start of parseTransactions. Count of entries is ' + this.entries.length + ' and page is ' + this.page);
// console.log('Reported total is ' + this.total);
if (0 === this.entries.length) {
console.log('Will not render now');
// console.log('Will not render now because length is 0.');
return;
}
console.log('Now have ' + this.transactions.length + ' transactions');
// console.log('Now have ' + this.transactions.length + ' transactions');
for (let i = 0; i < this.total; i++) {
this.transactions.push({dummy: true,type: 'x'});
this.transactions.push({dummy: true, type: 'x'});
// console.log('Push dummy to index ' + i);
// console.log('Now have ' + this.transactions.length + ' transactions');
}
@ -265,7 +270,7 @@ export default {
},
newCacheKey: function () {
this.refreshCacheKey();
console.log('Cache key is now ' + this.cacheKey);
// console.log('Cache key is now ' + this.cacheKey);
this.$emit('refreshed-cache-key');
},
updateFieldList: function () {
@ -292,6 +297,7 @@ export default {
row.key = transaction.id;
row.id = transaction.id
row.dummy = false;
row.hasAttachments = false;
// pick this up from the first transaction
let first = transaction.attributes.transactions[0];
@ -331,6 +337,9 @@ export default {
split.category_id = info.category_id;
split.category_name = info.category_name;
split.split_index = i;
if(true === info.has_attachments) {
row.hasAttachments = true;
}
row.splits.push(split);
}
}

View File

@ -29,6 +29,7 @@
:add-only-from-autocomplete="false"
:autocomplete-items="autocompleteItems"
:tags="tags"
ref="input"
:title="$t('firefly.tags')"
v-bind:placeholder="$t('firefly.tags')"
@tags-changed="newTags => this.tags = newTags"

View File

@ -224,6 +224,7 @@
"enddate": "End date",
"object_group": "\u0413\u0440\u0443\u043f\u0430",
"attachments": "\u041f\u0440\u0438\u043a\u0430\u0447\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0435",
"deletePermanently": "\u0411\u0435\u0437\u0432\u044a\u0437\u0432\u0440\u0430\u0442\u043d\u043e \u0438\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435",
"active": "\u0410\u043a\u0442\u0438\u0432\u0435\u043d",
"include_net_worth": "\u0412\u043a\u043b\u044e\u0447\u0438 \u0432 \u043e\u0431\u0449\u043e\u0442\u043e \u0431\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e",
"cc_type": "\u041f\u043e\u0433\u0430\u0441\u0438\u0442\u0435\u043b\u0435\u043d \u043f\u043b\u0430\u043d \u043d\u0430 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u0430 \u043a\u0430\u0440\u0442\u0430",

View File

@ -224,6 +224,7 @@
"enddate": "Datum ukon\u010den\u00ed",
"object_group": "Skupina",
"attachments": "P\u0159\u00edlohy",
"deletePermanently": "Nadobro smazat",
"active": "Aktivn\u00ed",
"include_net_worth": "Zahrnout do \u010dist\u00e9ho jm\u011bn\u00ed",
"cc_type": "Z\u00fa\u010dtovac\u00ed obdob\u00ed kreditn\u00ed karty",

View File

@ -47,7 +47,7 @@
"expense_accounts": "Ausgabekonten",
"go_to_expenses": "Ausgaben anzeigen",
"go_to_bills": "Rechnungen anzeigen",
"bills": "Rechnungen",
"bills": "Vetr\u00e4ge",
"last_thirty_days": "Letzte 30 Tage",
"last_seven_days": "Letzte sieben Tage",
"go_to_piggies": "Sparschweine anzeigen",
@ -224,6 +224,7 @@
"enddate": "Endet am",
"object_group": "Gruppe",
"attachments": "Anh\u00e4nge",
"deletePermanently": "Dauerhaft l\u00f6schen",
"active": "Aktiv",
"include_net_worth": "Im Eigenkapital enthalten",
"cc_type": "Kreditkartenzahlungsplan",

View File

@ -224,6 +224,7 @@
"enddate": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03bb\u03ae\u03be\u03b7\u03c2",
"object_group": "\u039f\u03bc\u03ac\u03b4\u03b1",
"attachments": "\u03a3\u03c5\u03bd\u03b7\u03bc\u03bc\u03ad\u03bd\u03b1",
"deletePermanently": "\u039f\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03ae \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae",
"active": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc",
"include_net_worth": "\u0395\u03bd\u03c4\u03cc\u03c2 \u03ba\u03b1\u03b8\u03b1\u03c1\u03ae\u03c2 \u03b1\u03be\u03af\u03b1\u03c2",
"cc_type": "\u03a3\u03c7\u03ad\u03b4\u03b9\u03bf \u03c0\u03bb\u03b7\u03c1\u03c9\u03bc\u03ae\u03c2 \u03c0\u03b9\u03c3\u03c4\u03c9\u03c4\u03b9\u03ba\u03ae\u03c2 \u03ba\u03ac\u03c1\u03c4\u03b1\u03c2",

View File

@ -224,6 +224,7 @@
"enddate": "End date",
"object_group": "Group",
"attachments": "Attachments",
"deletePermanently": "Delete permanently",
"active": "Active",
"include_net_worth": "Include in net worth",
"cc_type": "Credit card payment plan",

View File

@ -224,6 +224,7 @@
"enddate": "End date",
"object_group": "Group",
"attachments": "Attachments",
"deletePermanently": "Delete permanently",
"active": "Active",
"include_net_worth": "Include in net worth",
"cc_type": "Credit card payment plan",

View File

@ -57,7 +57,7 @@
"amounts": "Importes",
"left": "Disponible",
"spent": "Gastado",
"Default asset account": "Cuenta de ingresos por defecto",
"Default asset account": "Cuenta de activos por defecto",
"search_results": "Buscar resultados",
"include": "\u00bfIncluir?",
"transaction": "Transaccion",
@ -159,7 +159,7 @@
"bill_repeats_yearly_skip": "Repetir cada {skip} a\u00f1os",
"not_expected_period": "No se espera en este per\u00edodo",
"subscriptions": "Suscripciones",
"bill_expected_date_js": "Expected {date}",
"bill_expected_date_js": "Fecha prevista {date}",
"inactive": "Inactivo",
"forever": "Siempre",
"extension_date_is": "Fecha de extensi\u00f3n es {date}",
@ -224,6 +224,7 @@
"enddate": "Fecha fin",
"object_group": "Grupo",
"attachments": "Adjuntos",
"deletePermanently": "Borrar permanentemente",
"active": "Activo",
"include_net_worth": "Incluir en valor neto",
"cc_type": "Plan de pagos con tarjeta de cr\u00e9dito",

View File

@ -224,6 +224,7 @@
"enddate": "End date",
"object_group": "Ryhm\u00e4",
"attachments": "Liitteet",
"deletePermanently": "Poista pysyv\u00e4sti",
"active": "Aktiivinen",
"include_net_worth": "Sis\u00e4llyt\u00e4 varallisuuteen",
"cc_type": "Luottokortin maksusuunnitelma",

View File

@ -224,6 +224,7 @@
"enddate": "Date de fin",
"object_group": "Groupe",
"attachments": "Documents joints",
"deletePermanently": "Supprimer d\u00e9finitivement",
"active": "Actif",
"include_net_worth": "Inclure dans l'avoir net",
"cc_type": "Plan de paiement de carte de cr\u00e9dit",

View File

@ -224,6 +224,7 @@
"enddate": "End date",
"object_group": "Csoport",
"attachments": "Mell\u00e9kletek",
"deletePermanently": "V\u00e9gleges t\u00f6rl\u00e9s",
"active": "Akt\u00edv",
"include_net_worth": "Befoglalva a nett\u00f3 \u00e9rt\u00e9kbe",
"cc_type": "Hitelk\u00e1rtya fizet\u00e9si terv",

View File

@ -224,6 +224,7 @@
"enddate": "Data di scadenza",
"object_group": "Gruppo",
"attachments": "Allegati",
"deletePermanently": "Elimina definitivamente",
"active": "Attivo",
"include_net_worth": "Includi nel patrimonio",
"cc_type": "Piano di pagamento della carta di credito",

View File

@ -224,6 +224,7 @@
"enddate": "\u7d42\u4e86\u65e5",
"object_group": "\u30b0\u30eb\u30fc\u30d7",
"attachments": "\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb",
"deletePermanently": "\u6c38\u4e45\u306b\u524a\u9664",
"active": "\u6709\u52b9",
"include_net_worth": "\u7d14\u8cc7\u7523\u306b\u542b\u3081\u308b",
"cc_type": "\u30af\u30ec\u30b8\u30c3\u30c8\u30ab\u30fc\u30c9\u306e\u6c7a\u6e08\u65b9\u6cd5",

View File

@ -224,6 +224,7 @@
"enddate": "End date",
"object_group": "Group",
"attachments": "Vedlegg",
"deletePermanently": "Slett permanent",
"active": "Aktiv",
"include_net_worth": "Inkluder i formue",
"cc_type": "Credit card payment plan",

View File

@ -224,6 +224,7 @@
"enddate": "Einddatum",
"object_group": "Groep",
"attachments": "Bijlagen",
"deletePermanently": "Verwijderen",
"active": "Actief",
"include_net_worth": "Meetellen in kapitaal",
"cc_type": "Betaalplan",

View File

@ -224,6 +224,7 @@
"enddate": "Data ko\u0144cowa",
"object_group": "Grupa",
"attachments": "Za\u0142\u0105czniki",
"deletePermanently": "Usu\u0144 trwale",
"active": "Aktywny",
"include_net_worth": "Uwzgl\u0119dnij w warto\u015bci netto",
"cc_type": "Plan p\u0142atno\u015bci kart\u0105 kredytow\u0105",

View File

@ -224,6 +224,7 @@
"enddate": "End date",
"object_group": "Grupo",
"attachments": "Anexos",
"deletePermanently": "Apagar permanentemente",
"active": "Ativar",
"include_net_worth": "Incluir no patrimonio liquido",
"cc_type": "Plano de pagamento do Cart\u00e3o de Cr\u00e9dito",

View File

@ -224,6 +224,7 @@
"enddate": "Data do t\u00e9rmino",
"object_group": "Grupo",
"attachments": "Anexos",
"deletePermanently": "Apagar permanentemente",
"active": "Activo",
"include_net_worth": "Incluir no patrimonio liquido",
"cc_type": "Plano de pagamento do cart\u00e3o de cr\u00e9dito",

View File

@ -224,6 +224,7 @@
"enddate": "Data de sf\u00e2r\u0219it",
"object_group": "Grup",
"attachments": "Fi\u0219iere ata\u0219ate",
"deletePermanently": "\u0218terge permanent",
"active": "Activ",
"include_net_worth": "Include\u021bi \u00een valoare net\u0103",
"cc_type": "Plan de plat\u0103 cu card de credit",

View File

@ -224,6 +224,7 @@
"enddate": "End date",
"object_group": "\u0413\u0440\u0443\u043f\u043f\u0430",
"attachments": "\u0412\u043b\u043e\u0436\u0435\u043d\u0438\u044f",
"deletePermanently": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430",
"active": "\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439",
"include_net_worth": "\u0412\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \"\u041c\u043e\u0438 \u0441\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u044f\"",
"cc_type": "\u041f\u043b\u0430\u043d \u043e\u043f\u043b\u0430\u0442\u044b \u043f\u043e \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0435",

View File

@ -224,6 +224,7 @@
"enddate": "End date",
"object_group": "Skupina",
"attachments": "Pr\u00edlohy",
"deletePermanently": "Permanentne odstr\u00e1ni\u0165",
"active": "Akt\u00edvne",
"include_net_worth": "Zahrn\u00fa\u0165 do \u010dist\u00e9ho majetku",
"cc_type": "Z\u00fa\u010dtovacie obdobie kreditnej karty",

View File

@ -224,6 +224,7 @@
"enddate": "Slutdatum",
"object_group": "Grupp",
"attachments": "Bilagor",
"deletePermanently": "Ta bort permanent",
"active": "Aktiv",
"include_net_worth": "Inkludera i nettov\u00e4rde",
"cc_type": "Kreditkort betalning plan",

View File

@ -224,6 +224,7 @@
"enddate": "End date",
"object_group": "Nh\u00f3m",
"attachments": "T\u00e0i li\u1ec7u \u0111\u00ednh k\u00e8m",
"deletePermanently": "X\u00f3a v\u0129nh vi\u1ec5n",
"active": "H\u00e0nh \u0111\u1ed9ng",
"include_net_worth": "Bao g\u1ed3m trong gi\u00e1 tr\u1ecb r\u00f2ng",
"cc_type": "G\u00f3i thanh to\u00e1n th\u1ebb t\u00edn d\u1ee5ng",

View File

@ -224,6 +224,7 @@
"enddate": "End date",
"object_group": "\u7ec4",
"attachments": "\u9644\u4ef6",
"deletePermanently": "\u6c38\u4e45\u5220\u9664",
"active": "\u542f\u7528",
"include_net_worth": "\u5305\u542b\u4e8e\u51c0\u8d44\u4ea7",
"cc_type": "\u4fe1\u7528\u5361\u8fd8\u6b3e\u8ba1\u5212",

View File

@ -224,6 +224,7 @@
"enddate": "End date",
"object_group": "Group",
"attachments": "\u9644\u52a0\u6a94\u6848",
"deletePermanently": "\u6c38\u4e45\u522a\u9664",
"active": "\u555f\u7528",
"include_net_worth": "\u5305\u62ec\u6de8\u503c",
"cc_type": "\u4fe1\u7528\u5361\u4ed8\u6b3e\u8a08\u5283",

View File

@ -30,8 +30,8 @@ import IndexOptions from "../../components/accounts/IndexOptions";
let i18n = require('../../i18n');
let props = {};
// See reference nr. 8
// See reference nr. 9
// TODO: long lists are slow to load. Fix this.
// TODO add interest for liabilities
Vue.component('b-table', BTable);
Vue.component('b-pagination', BPagination);
@ -45,7 +45,7 @@ const app = new Vue({
return createElement(Index, {props: props});
},
beforeCreate() {
// See reference nr. 10
// init the old root store (TODO remove me)
this.$store.commit('initialiseStore');
this.$store.dispatch('updateCurrencyPreference');
@ -64,7 +64,7 @@ const calendar = new Vue({
render: (createElement) => {
return createElement(Calendar, {props: props});
},
// See reference nr. 11
// TODO init store as well?
});
const opt = new Vue({
@ -74,5 +74,5 @@ const opt = new Vue({
render: (createElement) => {
return createElement(IndexOptions, {props: props});
},
// See reference nr. 12
// TODO init store as well?
});

View File

@ -57,7 +57,7 @@ const app = new Vue({
},
});
new Vue({
const calendar = new Vue({
i18n,
store,
el: "#calendar",

View File

@ -889,9 +889,9 @@
to-fast-properties "^2.0.0"
"@discoveryjs/json-ext@^0.5.0":
version "0.5.5"
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3"
integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==
version "0.5.6"
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f"
integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==
"@fortawesome/fontawesome-free@^5.15.3":
version "5.15.4"
@ -956,9 +956,9 @@
integrity sha512-gAj8qNy/VYwQDBkACm0USM66kxFai8flX83ayRXPNhzZckEgSqIBB9sM74SCM3ssgeX+ZVy4BifTnLis+KpIyg==
"@types/babel__core@^7.1.16":
version "7.1.16"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702"
integrity sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==
version "7.1.17"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.17.tgz#f50ac9d20d64153b510578d84f9643f9a3afbe64"
integrity sha512-6zzkezS9QEIL8yCBvXWxPTJPNuMeECJVxSOhxNY/jfq9LxOTHivaYTqr37n9LknWWRTIkzqH2UilS5QFvfa90A==
dependencies:
"@babel/parser" "^7.1.0"
"@babel/types" "^7.0.0"
@ -1005,9 +1005,9 @@
"@types/estree" "*"
"@types/eslint@*":
version "8.2.0"
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.2.0.tgz#afd0519223c29c347087542cbaee2fedc0873b16"
integrity sha512-74hbvsnc+7TEDa1z5YLSe4/q8hGYB3USNvCuzHUJrjPV6hXaq8IXcngCrHkuvFt0+8rFz7xYXrHgNayIX0UZvQ==
version "8.2.1"
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.2.1.tgz#13f3d69bac93c2ae008019c28783868d0a1d6605"
integrity sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==
dependencies:
"@types/estree" "*"
"@types/json-schema" "*"
@ -1079,9 +1079,9 @@
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
"@types/node@*":
version "16.11.10"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.10.tgz#2e3ad0a680d96367103d3e670d41c2fed3da61ae"
integrity sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==
version "16.11.12"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10"
integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==
"@types/parse-json@^4.0.0":
version "4.0.0"
@ -1845,7 +1845,7 @@ browserify-zlib@^0.2.0:
dependencies:
pako "~1.0.5"
browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.17.6:
browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1:
version "4.18.1"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f"
integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==
@ -1947,9 +1947,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001272, caniuse-lite@^1.0.30001280:
version "1.0.30001283"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001283.tgz#8573685bdae4d733ef18f78d44ba0ca5fe9e896b"
integrity sha512-9RoKo841j1GQFSJz/nCXOj0sD7tHBtlowjYlrqIUS812x9/emfBLBt6IyMz1zIaYc/eRL8Cs6HPUVi2Hzq4sIg==
version "1.0.30001286"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz#3e9debad420419618cfdf52dc9b6572b28a8fff6"
integrity sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==
chalk@^2.0.0:
version "2.4.2"
@ -1981,10 +1981,10 @@ chart.js@^2.9.4:
chartjs-color "^2.1.0"
moment "^2.10.2"
chart.js@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-3.6.0.tgz#a87fce8431d4e7c5523d721f487f53aada1e42fe"
integrity sha512-iOzzDKePL+bj+ccIsVAgWQehCXv8xOKGbaU2fO/myivH736zcx535PGJzQGanvcSGVOqX6yuLZsN3ygcQ35UgQ==
chart.js@^3.6.2:
version "3.6.2"
resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-3.6.2.tgz#47342c551f688ffdda2cd53b534cb7e461ecec33"
integrity sha512-Xz7f/fgtVltfQYWq0zL1Xbv7N2inpG+B54p3D5FSvpCdy3sM+oZhbqa42eNuYXltaVvajgX5UpKCU2GeeJIgxg==
chartjs-color-string@^0.6.0:
version "0.6.0"
@ -2087,9 +2087,9 @@ codemirror@^5.60.0:
integrity sha512-fqr6CtDQdJ6iNMbD8NX2gH2G876nNDk+TO1rrYkgWnqQdO3O1Xa9tK6q+psqhJJgE5SpbaDcgdfLmukoUVE8pg==
collect.js@^4.28.5:
version "4.29.0"
resolved "https://registry.yarnpkg.com/collect.js/-/collect.js-4.29.0.tgz#2fecc535b5e5712a5c7eeaa2c2d510f3113ec423"
integrity sha512-yhgGYEsLEcqnLT1NmRlN1+1euoz9SDhxQ4QyDhWYsKoWsg7252PKA5++dWaDs8mdFxbkmXDXQUaHXI9J2eTPkQ==
version "4.29.3"
resolved "https://registry.yarnpkg.com/collect.js/-/collect.js-4.29.3.tgz#4d8aeb2970d0d12f6bc0923c9a2a172d51ec25f8"
integrity sha512-/6idZ7r3B25Q4cForbiHJ7+aqupcgMEtrKRn9D3viCbLw+YuNFjd23HwDH89Y2cU4jlhkwksD80nZFKtNE25Gw==
color-convert@^1.9.0, color-convert@^1.9.3:
version "1.9.3"
@ -2249,11 +2249,11 @@ cookie@0.4.0:
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
core-js-compat@^3.18.0, core-js-compat@^3.19.1:
version "3.19.1"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.19.1.tgz#fe598f1a9bf37310d77c3813968e9f7c7bb99476"
integrity sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==
version "3.19.3"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.19.3.tgz#de75e5821c5ce924a0a1e7b7d5c2cb973ff388aa"
integrity sha512-59tYzuWgEEVU9r+SRgceIGXSSUn47JknoiXW6Oq7RW8QHjXWz3/vp8pa7dbtuVu40sewz3OP3JmQEcDdztrLhA==
dependencies:
browserslist "^4.17.6"
browserslist "^4.18.1"
semver "7.0.0"
core-js@^2.4.0:
@ -2262,9 +2262,9 @@ core-js@^2.4.0:
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
core-js@^3.15.2:
version "3.19.1"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.19.1.tgz#f6f173cae23e73a7d88fa23b6e9da329276c6641"
integrity sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==
version "3.19.3"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.19.3.tgz#6df8142a996337503019ff3235a7022d7cdf4559"
integrity sha512-LeLBMgEGSsG7giquSzvgBrTS7V5UL6ks3eQlUSbN8dJStlLFiRzUm5iqsRyzUB8carhfKjkJ2vzKqE6z1Vga9g==
core-util-is@~1.0.0:
version "1.0.3"
@ -2401,10 +2401,10 @@ cssesc@^3.0.0:
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
cssnano-preset-default@^5.1.7:
version "5.1.7"
resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.7.tgz#68c3ad1ec6a810482ec7d06b2d70fc34b6b0d70c"
integrity sha512-bWDjtTY+BOqrqBtsSQIbN0RLGD2Yr2CnecpP0ydHNafh9ZUEre8c8VYTaH9FEbyOt0eIfEUAYYk5zj92ioO8LA==
cssnano-preset-default@^5.1.8:
version "5.1.8"
resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.8.tgz#7525feb1b72f7b06e57f55064cbdae341d79dea2"
integrity sha512-zWMlP0+AMPBVE852SqTrP0DnhTcTA2C1wAF92TKZ3Va+aUVqLIhkqKlnJIXXdqXD7RN+S1ujuWmNpvrJBiM/vg==
dependencies:
css-declaration-sorter "^6.0.3"
cssnano-utils "^2.0.1"
@ -2431,7 +2431,7 @@ cssnano-preset-default@^5.1.7:
postcss-normalize-url "^5.0.3"
postcss-normalize-whitespace "^5.0.1"
postcss-ordered-values "^5.0.2"
postcss-reduce-initial "^5.0.1"
postcss-reduce-initial "^5.0.2"
postcss-reduce-transforms "^5.0.1"
postcss-svgo "^5.0.3"
postcss-unique-selectors "^5.0.2"
@ -2442,11 +2442,11 @@ cssnano-utils@^2.0.1:
integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==
cssnano@^5.0.8:
version "5.0.11"
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.11.tgz#743397a05e04cb87e9df44b7659850adfafc3646"
integrity sha512-5SHM31NAAe29jvy0MJqK40zZ/8dGlnlzcfHKw00bWMVFp8LWqtuyPSFwbaoIoxvt71KWJOfg8HMRGrBR3PExCg==
version "5.0.12"
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.12.tgz#2c083a1c786fc9dc2d5522bd3c0e331b7cd302ab"
integrity sha512-U38V4x2iJ3ijPdeWqUrEr4eKBB5PbEKsNP5T8xcik2Au3LeMtiMHX0i2Hu9k51FcKofNZumbrcdC6+a521IUHg==
dependencies:
cssnano-preset-default "^5.1.7"
cssnano-preset-default "^5.1.8"
is-resolvable "^1.1.0"
lilconfig "^2.0.3"
yaml "^1.10.2"
@ -2712,10 +2712,10 @@ date-fns-tz@^1.1.4:
resolved "https://registry.yarnpkg.com/date-fns-tz/-/date-fns-tz-1.1.6.tgz#93cbf354e2aeb2cd312ffa32e462c1943cf20a8e"
integrity sha512-nyy+URfFI3KUY7udEJozcoftju+KduaqkVfwyTIE0traBiVye09QnyWKLZK7drRr5h9B7sPJITmQnS3U6YOdQg==
date-fns@^2.22.1, date-fns@^2.26.0:
version "2.26.0"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.26.0.tgz#fa45305543c392c4f914e50775fd2a4461e60fbd"
integrity sha512-VQI812dRi3cusdY/fhoBKvc6l2W8BPWU1FNVnFH9Nttjx4AFBRzfSVb/Eyc7jBT6e9sg1XtAGsYpBQ6c/jygbg==
date-fns@^2.22.1, date-fns@^2.27.0:
version "2.27.0"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.27.0.tgz#e1ff3c3ddbbab8a2eaadbb6106be2929a5a2d92b"
integrity sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q==
daterangepicker@^3.1.0:
version "3.1.0"
@ -2745,9 +2745,9 @@ debug@^3.1.1:
ms "^2.1.1"
debug@^4.1.0, debug@^4.1.1:
version "4.3.2"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
version "4.3.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
dependencies:
ms "2.1.2"
@ -2892,9 +2892,9 @@ domhandler@^3.0.0:
domelementtype "^2.0.1"
domhandler@^4.2.0:
version "4.2.2"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f"
integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==
version "4.3.0"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626"
integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==
dependencies:
domelementtype "^2.2.0"
@ -2948,9 +2948,9 @@ ekko-lightbox@^5.3.0:
integrity sha512-mbacwySuVD3Ad6F2hTkjSTvJt59bcVv2l/TmBerp4xZnLak8tPtA4AScUn4DL42c1ksTiAO6sGhJZ52P/1Qgew==
electron-to-chromium@^1.3.896:
version "1.4.1"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.1.tgz#623f8fa6ee416e016d93f00efc34fbc73f9f59ed"
integrity sha512-9ldvb6QMHiDpUNF1iSwBTiTT0qXEN+xIO5WlCJrC5gt0z74ofOiqR698vaJqYWnri0XZiF0YmnrFmGq/EmpGAA==
version "1.4.15"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.15.tgz#4bd144d9d13f8b375c65e1a593e7f4a90bd01b90"
integrity sha512-WDw2IUL3k4QpbzInV3JZK+Zd1NjWJPDZ28oUSchWb/kf6AVj7/niaAlgcJlvojFa1d7pJSyQ/KSZsEtq5W7aGQ==
elliptic@^6.5.3:
version "6.5.4"
@ -3383,9 +3383,9 @@ flot@^4.2.2:
integrity sha512-Strct/A27o0TA25X7Z0pxKhwK4djiP1Kjeqj0tkiqrkRu1qYPqfbp5BYuxEL8CWDNtj85Uc0PnG2E2plo1+VMg==
follow-redirects@^1.0.0, follow-redirects@^1.14.0:
version "1.14.5"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381"
integrity sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==
version "1.14.6"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.6.tgz#8cfb281bbc035b3c067d6cd975b0f6ade6e855cd"
integrity sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==
fontkit@^1.8.1:
version "1.8.1"
@ -3713,9 +3713,9 @@ http-errors@~1.7.2:
toidentifier "1.0.0"
http-parser-js@>=0.5.1:
version "0.5.3"
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9"
integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==
version "0.5.5"
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5"
integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==
http-proxy-middleware@^2.0.0:
version "2.0.1"
@ -3813,6 +3813,11 @@ immediate@~3.0.5:
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
immutable@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23"
integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==
import-cwd@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92"
@ -4057,9 +4062,9 @@ isobject@^3.0.1:
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
jest-worker@^27.0.6:
version "27.3.1"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.3.1.tgz#0def7feae5b8042be38479799aeb7b5facac24b2"
integrity sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==
version "27.4.4"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.4.tgz#9390a97c013a54d07f5c2ad2b5f6109f30c4966d"
integrity sha512-jfwxYJvfua1b1XkyuyPh01ATmgg4e5fPM/muLmhy9Qc6dmiwacQB0MLHaU6IjEsv/+nAixHGxTn8WllA27Pn0w==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
@ -4197,7 +4202,7 @@ kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
klona@^2.0.4:
klona@^2.0.4, klona@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
@ -4720,9 +4725,9 @@ object-assign@^4.1.0, object-assign@^4.1.1:
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
object-inspect@^1.6.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==
version "1.11.1"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.1.tgz#d4bd7d7de54b9a75599f59a00bd698c1f1c6549b"
integrity sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==
object-is@^1.0.1:
version "1.1.5"
@ -5104,12 +5109,12 @@ postcss-load-config@^3.1.0:
yaml "^1.10.2"
postcss-loader@^6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.0.tgz#714370a3f567141cf4cadcdf9575f5234d186bc5"
integrity sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA==
version "6.2.1"
resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef"
integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==
dependencies:
cosmiconfig "^7.0.0"
klona "^2.0.4"
klona "^2.0.5"
semver "^7.3.5"
postcss-merge-longhand@^5.0.4:
@ -5267,12 +5272,12 @@ postcss-ordered-values@^5.0.2:
cssnano-utils "^2.0.1"
postcss-value-parser "^4.1.0"
postcss-reduce-initial@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946"
integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==
postcss-reduce-initial@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.2.tgz#fa424ce8aa88a89bc0b6d0f94871b24abe94c048"
integrity sha512-v/kbAAQ+S1V5v9TJvbGkV98V2ERPdU6XvMcKMjqAlYiJ2NtsHGlKYLPjWWcXlaTKNxooId7BGxeraK8qXvzKtw==
dependencies:
browserslist "^4.16.0"
browserslist "^4.16.6"
caniuse-api "^3.0.0"
postcss-reduce-transforms@^5.0.1:
@ -5284,9 +5289,9 @@ postcss-reduce-transforms@^5.0.1:
postcss-value-parser "^4.1.0"
postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5:
version "6.0.6"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea"
integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==
version "6.0.7"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz#48404830a635113a71fd79397de8209ed05a66fc"
integrity sha512-U+b/Deoi4I/UmE6KOVPpnhS7I7AYdKbhGcat+qTQ27gycvaACvNEw11ba6RrkwVmDVRW7sigWgLj4/KbbJjeDA==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
@ -5308,9 +5313,9 @@ postcss-unique-selectors@^5.0.2:
postcss-selector-parser "^6.0.5"
postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
version "4.2.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^7.0.35, postcss@^7.0.36:
version "7.0.39"
@ -5320,10 +5325,10 @@ postcss@^7.0.35, postcss@^7.0.36:
picocolors "^0.2.1"
source-map "^0.6.1"
postcss@^8.2.15, postcss@^8.3.11:
version "8.4.1"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.1.tgz#73051f825509ad1a716ef500108001bf3d1fa8f7"
integrity sha512-WqLs/TTzXdG+/A4ZOOK9WDZiikrRaiA+eoEb/jz2DT9KUhMNHgP7yKPO8vwi62ZCsb703Gwb7BMZwDzI54Y2Ag==
postcss@^8.2.15, postcss@^8.4.4:
version "8.4.4"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.4.tgz#d53d4ec6a75fd62557a66bb41978bf47ff0c2869"
integrity sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q==
dependencies:
nanoid "^3.1.30"
picocolors "^1.0.0"
@ -5335,9 +5340,9 @@ prelude-ls@~1.1.2:
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
"prettier@^1.18.2 || ^2.0.0":
version "2.4.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c"
integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==
version "2.5.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==
pretty-time@^1.1.0:
version "1.1.0"
@ -5688,19 +5693,20 @@ safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1,
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sass-loader@^12.2.0:
version "12.3.0"
resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.3.0.tgz#93278981c189c36a58cbfc37d4b9cef0cdc02871"
integrity sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA==
version "12.4.0"
resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.4.0.tgz#260b0d51a8a373bb8e88efc11f6ba5583fea0bcf"
integrity sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==
dependencies:
klona "^2.0.4"
neo-async "^2.6.2"
sass@^1.43.3:
version "1.43.5"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.43.5.tgz#25a9d91dd098793ef7229d7b04dd3daae2fc4a65"
integrity sha512-WuNm+eAryMgQluL7Mbq9M4EruyGGMyal7Lu58FfnRMVWxgUzIvI7aSn60iNt3kn5yZBMR7G84fAGDcwqOF5JOg==
sass@^1.44.0:
version "1.44.0"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.44.0.tgz#619aa0a2275c097f9af5e6b8fe8a95e3056430fb"
integrity sha512-0hLREbHFXGQqls/K8X+koeP+ogFRPF4ZqetVB19b7Cst9Er8cOR0rc6RU7MaI4W1JmUShd1BPgPoeqmmgMMYFw==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
sax@^1.2.1:
version "1.2.4"
@ -5899,12 +5905,12 @@ slash@^3.0.0:
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
sockjs@^0.3.21:
version "0.3.21"
resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417"
integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==
version "0.3.24"
resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce"
integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==
dependencies:
faye-websocket "^0.11.3"
uuid "^3.4.0"
uuid "^8.3.2"
websocket-driver "^0.7.4"
sortablejs@^1.14.0:
@ -6046,7 +6052,7 @@ stream-http@^2.7.2:
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
string-width@^4.1.0, string-width@^4.2.0:
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@ -6426,12 +6432,7 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
uuid@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
uuid@^8.3.0:
uuid@^8.3.0, uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
@ -6527,10 +6528,10 @@ vuex@^3.6.2:
resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71"
integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==
watchpack@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.0.tgz#a41bca3da6afaff31e92a433f4c856a0c25ea0c4"
integrity sha512-MnN0Q1OsvB/GGHETrFeZPQaOelWh/7O+EiFlj8sM9GPjtQkis7k01aAxrg/18kTfoIVcLL+haEVFlXDaSRwKRw==
watchpack@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25"
integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==
dependencies:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
@ -6636,10 +6637,10 @@ webpack-sources@^3.2.2:
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.2.tgz#d88e3741833efec57c4c789b6010db9977545260"
integrity sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==
webpack@^5.60.0, webpack@^5.64.2:
version "5.64.3"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.64.3.tgz#f4792cc3f8528db2c18375fa2cd269f69e0bf69f"
integrity sha512-XF6/IL9Bw2PPQioiR1UYA8Bs4tX3QXJtSelezKECdLFeSFzWoe44zqTzPW5N+xI3fACaRl2/G3sNA4WYHD7Iww==
webpack@^5.60.0, webpack@^5.64.4:
version "5.65.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.65.0.tgz#ed2891d9145ba1f0d318e4ea4f89c3fa18e6f9be"
integrity sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==
dependencies:
"@types/eslint-scope" "^3.7.0"
"@types/estree" "^0.0.50"
@ -6663,7 +6664,7 @@ webpack@^5.60.0, webpack@^5.64.2:
schema-utils "^3.1.0"
tapable "^2.1.1"
terser-webpack-plugin "^5.1.3"
watchpack "^2.2.0"
watchpack "^2.3.1"
webpack-sources "^3.2.2"
webpackbar@^5.0.0-3:
@ -6766,20 +6767,20 @@ yaml@^1.10.0, yaml@^1.10.2:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
yargs-parser@^20.2.2:
version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
yargs-parser@^21.0.0:
version "21.0.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55"
integrity sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==
yargs@^17.2.1:
version "17.2.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.2.1.tgz#e2c95b9796a0e1f7f3bf4427863b42e0418191ea"
integrity sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==
version "17.3.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.0.tgz#295c4ffd0eef148ef3e48f7a2e0f58d0e4f26b1c"
integrity sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==
dependencies:
cliui "^7.0.2"
escalade "^3.1.1"
get-caller-file "^2.0.5"
require-directory "^2.1.1"
string-width "^4.2.0"
string-width "^4.2.3"
y18n "^5.0.5"
yargs-parser "^20.2.2"
yargs-parser "^21.0.0"

View File

@ -10,14 +10,14 @@
},
"devDependencies": {
"@johmun/vue-tags-input": "^2",
"@vue/compiler-sfc": "^3.2.22",
"@vue/compiler-sfc": "^3.2.23",
"axios": "^0.24",
"bootstrap-sass": "^3",
"cross-env": "^7.0",
"font-awesome": "^4.7.0",
"jquery": "^3",
"laravel-mix": "^6.0",
"postcss": "^8.3",
"postcss": "^8.4",
"uiv": "^1.4",
"vue": "^2.6",
"vue-i18n": "^8.26",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -23,7 +23,7 @@
*/
/*!
* Chart.js v3.6.0
* Chart.js v3.6.2
* https://www.chartjs.org
* (c) 2021 Chart.js Contributors
* Released under the MIT License

File diff suppressed because one or more lines are too long

View File

@ -13,7 +13,7 @@
"transaction_new_stored_link": "<a href=\"transactions\/show\/{ID}\">Buchung #{ID}<\/a> wurde gespeichert.",
"transaction_journal_information": "Transaktionsinformationen",
"no_budget_pointer": "Sie scheinen noch keine Kostenrahmen festgelegt zu haben. Sie sollten einige davon auf der Seite <a href=\"budgets\">Kostenrahmen<\/a>- anlegen. Kostenrahmen k\u00f6nnen Ihnen dabei helfen, den \u00dcberblick \u00fcber die Ausgaben zu behalten.",
"no_bill_pointer": "Sie scheinen noch keine Rechnungen zu haben. Sie sollten einige auf der Seite <a href=\"bills\">Rechnungen<\/a> erstellen. Anhand der Rechnungen k\u00f6nnen Sie den \u00dcberblick \u00fcber Ihre Ausgaben behalten.",
"no_bill_pointer": "Sie scheinen noch keine Vertr\u00e4ge zu haben. Sie sollten einige auf der Seite <a href=\"bills\">Vertr\u00e4ge<\/a> erstellen. Anhand der Vertr\u00e4ge k\u00f6nnen Sie den \u00dcberblick \u00fcber Ihre Ausgaben behalten.",
"source_account": "Quellkonto",
"hidden_fields_preferences": "Sie k\u00f6nnen weitere Buchungsoptionen in Ihren <a href=\"preferences\">Einstellungen<\/a> aktivieren.",
"destination_account": "Zielkonto",

View File

@ -110,7 +110,7 @@ return [
'registered' => 'Sie haben sich erfolgreich registriert!',
'Default asset account' => 'Standard-Bestandskonto',
'no_budget_pointer' => 'Sie scheinen noch keine Kostenrahmen festgelegt zu haben. Sie sollten einige davon auf der Seite <a href="budgets">Kostenrahmen</a>- anlegen. Kostenrahmen können Ihnen dabei helfen, den Überblick über die Ausgaben zu behalten.',
'no_bill_pointer' => 'Sie scheinen noch keine Rechnungen zu haben. Sie sollten einige auf der Seite <a href="bills">Rechnungen</a> erstellen. Anhand der Rechnungen können Sie den Überblick über Ihre Ausgaben behalten.',
'no_bill_pointer' => 'Sie scheinen noch keine Verträge zu haben. Sie sollten einige auf der Seite <a href="bills">Verträge</a> erstellen. Anhand der Verträge können Sie den Überblick über Ihre Ausgaben behalten.',
'Savings account' => 'Sparkonto',
'Credit card' => 'Kreditkarte',
'source_accounts' => 'Quellkonto|Quellkonten',
@ -209,10 +209,10 @@ return [
'no_att_demo_user' => 'Anwender der Demo-Version können keine Anhänge hochladen.',
'button_register' => 'Registrieren',
'authorization' => 'Autorisierung',
'active_bills_only' => 'Nur aktive Rechnungen',
'active_bills_only' => 'nur aktive Rechnungen',
'active_bills_only_total' => 'Alle aktiven Rechnungen',
'active_exp_bills_only' => 'nur aktive und erwartete Rechnungen',
'active_exp_bills_only_total' => 'Nur aktive und erwartete Rechnungen',
'active_exp_bills_only_total' => 'nur aktive und erwartete Rechnungen',
'per_period_sum_1D' => 'Erwartete tägliche Kosten',
'per_period_sum_1W' => 'Erwartete wöchentliche Kosten',
'per_period_sum_1M' => 'Erwartete monatliche Kosten',
@ -1370,7 +1370,7 @@ return [
'piggyBanks' => 'Sparschweine',
'piggy_banks' => 'Sparschweine',
'amount_x_of_y' => '{current} von {total}',
'bills' => 'Rechnungen',
'bills' => 'Veträge',
'withdrawal' => 'Ausgabe',
'opening_balance' => 'Eröffnungsbilanz',
'deposit' => 'Einnahme',
@ -1774,8 +1774,8 @@ return [
'no_piggies_imperative_default' => 'Haben Sie Dinge, auf die Sie sparen? Erstellen Sie eine Sparschwein und behalten Sie den Überblick:',
'no_piggies_create_default' => 'Ein neues Sparschwein erstellen',
'no_bills_title_default' => 'Lassen Sie uns nun eine Rechnung erstellen!',
'no_bills_intro_default' => 'Du hast noch keine Rechnungen. Sie können Rechnungen erstellen, um die laufenden Ausgaben, wie zum Beispiel Ihre Versicherung oder Miete, nachzuverfolgen.',
'no_bills_imperative_default' => 'Haben Sie regelmäßige Rechnungen? Erstellen Sie eine Rechnung und verfolgen Sie Ihre Zahlungen:',
'no_bills_intro_default' => 'Du hast noch keine Veträge. Sie können Verträge erstellen, um die laufenden Ausgaben, wie zum Beispiel Ihre Versicherung oder Miete, nachzuverfolgen.',
'no_bills_imperative_default' => 'Haben Sie regelmäßige Verträge? Erstellen Sie einen Vertrag und verfolgen Sie Ihre Zahlungen:',
'no_bills_create_default' => 'Eine Rechnung erstellen',
// recurring transactions

Some files were not shown because too many files have changed in this diff Show More