mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Merge branch 'release/5.6.6'
This commit is contained in:
commit
b592528318
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -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 }}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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'),
|
||||
|
@ -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").
|
||||
|
@ -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 : '',
|
||||
|
@ -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']);
|
||||
}
|
||||
|
@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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.
|
||||
*
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
14
changelog.md
14
changelog.md
@ -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
|
||||
|
@ -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
944
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
@ -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",
|
||||
|
@ -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) {
|
||||
|
@ -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>
|
||||
|
@ -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: {
|
||||
|
@ -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: {
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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 + '%;'"
|
||||
|
@ -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 = {
|
||||
|
@ -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)
|
||||
},
|
||||
|
@ -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;
|
||||
|
@ -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 @@
|
||||
|
||||
</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;
|
||||
|
@ -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);
|
||||
},
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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 [];
|
||||
}
|
||||
},
|
||||
|
@ -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!');
|
||||
|
@ -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();
|
||||
},
|
||||
},
|
||||
|
@ -52,6 +52,11 @@ export default {
|
||||
bill: this.value,
|
||||
}
|
||||
},
|
||||
mounted: function () {
|
||||
this.$nextTick(function () {
|
||||
this.$refs.bill.tabIndex = 9;
|
||||
})
|
||||
},
|
||||
created() {
|
||||
this.collectData();
|
||||
},
|
||||
|
@ -52,6 +52,11 @@ export default {
|
||||
emitEvent: true
|
||||
}
|
||||
},
|
||||
mounted: function () {
|
||||
this.$nextTick(function () {
|
||||
this.$refs.budget.tabIndex = 8;
|
||||
})
|
||||
},
|
||||
created() {
|
||||
this.collectData();
|
||||
},
|
||||
|
@ -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:
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -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);
|
||||
|
@ -23,7 +23,7 @@
|
||||
<div v-if="isVisible" class="form-group">
|
||||
<div class="text-xs"> </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 + ')');
|
||||
|
@ -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">
|
||||
{{ split.description }}<br />
|
||||
{{ 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);
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -224,6 +224,7 @@
|
||||
"enddate": "Einddatum",
|
||||
"object_group": "Groep",
|
||||
"attachments": "Bijlagen",
|
||||
"deletePermanently": "Verwijderen",
|
||||
"active": "Actief",
|
||||
"include_net_worth": "Meetellen in kapitaal",
|
||||
"cc_type": "Betaalplan",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
10
frontend/src/pages/accounts/index.js
vendored
10
frontend/src/pages/accounts/index.js
vendored
@ -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?
|
||||
});
|
2
frontend/src/pages/bills/index.js
vendored
2
frontend/src/pages/bills/index.js
vendored
@ -57,7 +57,7 @@ const app = new Vue({
|
||||
},
|
||||
});
|
||||
|
||||
new Vue({
|
||||
const calendar = new Vue({
|
||||
i18n,
|
||||
store,
|
||||
el: "#calendar",
|
||||
|
@ -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"
|
||||
|
@ -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",
|
||||
|
2
public/v1/js/create_transaction.js
vendored
2
public/v1/js/create_transaction.js
vendored
File diff suppressed because one or more lines are too long
2
public/v1/js/edit_transaction.js
vendored
2
public/v1/js/edit_transaction.js
vendored
File diff suppressed because one or more lines are too long
2
public/v1/js/profile.js
vendored
2
public/v1/js/profile.js
vendored
File diff suppressed because one or more lines are too long
2
public/v2/js/accounts/create.js
vendored
2
public/v2/js/accounts/create.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/accounts/delete.js
vendored
2
public/v2/js/accounts/delete.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/accounts/edit.js
vendored
2
public/v2/js/accounts/edit.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/accounts/index.js
vendored
2
public/v2/js/accounts/index.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/accounts/show.js
vendored
2
public/v2/js/accounts/show.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/bills/create.js
vendored
2
public/v2/js/bills/create.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/bills/index.js
vendored
2
public/v2/js/bills/index.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/budgets/index.js
vendored
2
public/v2/js/budgets/index.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/dashboard.js
vendored
2
public/v2/js/dashboard.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/transactions/create.js
vendored
2
public/v2/js/transactions/create.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/transactions/edit.js
vendored
2
public/v2/js/transactions/edit.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/transactions/index.js
vendored
2
public/v2/js/transactions/index.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/vendor.js
vendored
2
public/v2/js/vendor.js
vendored
File diff suppressed because one or more lines are too long
@ -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
@ -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",
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user