mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
New frontend.
This commit is contained in:
parent
d4c9f53b10
commit
d60c5a26de
@ -21,25 +21,6 @@
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
/*
|
||||
* DateController.php
|
||||
* Copyright (c) 2020 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace FireflyIII\Api\V1\Controllers\Insight\Expense;
|
||||
|
||||
|
@ -21,25 +21,6 @@
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
/*
|
||||
* DateController.php
|
||||
* Copyright (c) 2020 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace FireflyIII\Api\V1\Controllers\Insight\Income;
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* IndexController.php
|
||||
* Copyright (c) 2020 james@firefly-iii.org
|
||||
* Copyright (c) 2021 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
@ -20,8 +20,9 @@ declare(strict_types=1);
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace FireflyIII\Api\V1\Controllers\Preferences;
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Api\V1\Controllers\Preferences;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Api\V1\Controllers\Controller;
|
||||
|
@ -84,6 +84,10 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
* @method static \Illuminate\Database\Query\Builder|Webhook withTrashed()
|
||||
* @method static \Illuminate\Database\Query\Builder|Webhook withoutTrashed()
|
||||
* @mixin \Eloquent
|
||||
* @property string $title
|
||||
* @property string $secret
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereSecret($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Webhook whereTitle($value)
|
||||
*/
|
||||
class Webhook extends Model
|
||||
{
|
||||
|
@ -49,6 +49,28 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
/**
|
||||
* Class WebhookAttempt
|
||||
*
|
||||
* @property int $id
|
||||
* @property \Illuminate\Support\Carbon|null $created_at
|
||||
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||
* @property string|null $deleted_at
|
||||
* @property int $webhook_message_id
|
||||
* @property int $status_code
|
||||
* @property string|null $logs
|
||||
* @property string|null $response
|
||||
* @property-read \FireflyIII\Models\WebhookMessage $webhookMessage
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt query()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereCreatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereDeletedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereId($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereLogs($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereResponse($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereStatusCode($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereUpdatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereWebhookMessageId($value)
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
class WebhookAttempt extends Model
|
||||
{
|
||||
|
@ -78,6 +78,8 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookMessage whereUuid($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|WebhookMessage whereWebhookId($value)
|
||||
* @mixin \Eloquent
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\WebhookAttempt[] $webhookAttempts
|
||||
* @property-read int|null $webhook_attempts_count
|
||||
*/
|
||||
class WebhookMessage extends Model
|
||||
{
|
||||
|
@ -1,4 +1,25 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* ActionFactory.php
|
||||
* Copyright (c) 2021 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* ActionFactory.php
|
||||
* Copyright (c) 2019 Robert Horlings
|
||||
|
@ -21,25 +21,6 @@
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
/*
|
||||
* WebhookTransformer.php
|
||||
* Copyright (c) 2020 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace FireflyIII\Transformers;
|
||||
|
||||
|
10
composer.lock
generated
10
composer.lock
generated
@ -9688,12 +9688,12 @@
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Roave/SecurityAdvisories.git",
|
||||
"reference": "7d7032b003f4c36edbf059dd039db72656df6323"
|
||||
"reference": "7263d7d73a4de68760e05f3eda5eee73b59f0f6d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/7d7032b003f4c36edbf059dd039db72656df6323",
|
||||
"reference": "7d7032b003f4c36edbf059dd039db72656df6323",
|
||||
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/7263d7d73a4de68760e05f3eda5eee73b59f0f6d",
|
||||
"reference": "7263d7d73a4de68760e05f3eda5eee73b59f0f6d",
|
||||
"shasum": ""
|
||||
},
|
||||
"conflict": {
|
||||
@ -9759,6 +9759,8 @@
|
||||
"ezsystems/repository-forms": ">=2.3,<2.3.2.1",
|
||||
"ezyang/htmlpurifier": "<4.1.1",
|
||||
"firebase/php-jwt": "<2",
|
||||
"flarum/sticky": ">=0.1-beta.14,<=0.1-beta.15",
|
||||
"flarum/tags": "<=0.1-beta.13",
|
||||
"fooman/tcpdf": "<6.2.22",
|
||||
"fossar/tcpdf-parser": "<6.2.22",
|
||||
"friendsofsymfony/oauth2-php": "<1.3",
|
||||
@ -10003,7 +10005,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2021-01-29T06:02:40+00:00"
|
||||
"time": "2021-01-29T18:18:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/cli-parser",
|
||||
|
@ -24,6 +24,7 @@ const lodashClonedeep = require('lodash.clonedeep');
|
||||
const state = () => ({
|
||||
transactionType: 'any',
|
||||
date: new Date,
|
||||
groupTitle: '',
|
||||
transactions: [],
|
||||
allowedOpposingTypes: {},
|
||||
accountToTransaction: {},
|
||||
@ -37,6 +38,22 @@ const state = () => ({
|
||||
payment_date: false,
|
||||
invoice_date: false,
|
||||
},
|
||||
defaultErrors: {
|
||||
description: [],
|
||||
amount: [],
|
||||
source: [],
|
||||
destination: [],
|
||||
currency: [],
|
||||
foreign_currency: [],
|
||||
foreign_amount: [],
|
||||
date: [],
|
||||
custom_dates: [],
|
||||
budget: [],
|
||||
category: [],
|
||||
bill: [],
|
||||
tags: [],
|
||||
piggy_bank: []
|
||||
},
|
||||
defaultTransaction: {
|
||||
// basic
|
||||
description: '',
|
||||
@ -94,9 +111,7 @@ const state = () => ({
|
||||
attachments: [],
|
||||
|
||||
// error handling
|
||||
errors: {
|
||||
description: []
|
||||
},
|
||||
errors: {},
|
||||
},
|
||||
}
|
||||
)
|
||||
@ -110,6 +125,9 @@ const getters = {
|
||||
date: state => {
|
||||
return state.date;
|
||||
},
|
||||
groupTitle: state => {
|
||||
return state.groupTitle;
|
||||
},
|
||||
transactionType: state => {
|
||||
return state.transactionType;
|
||||
},
|
||||
@ -185,11 +203,19 @@ const actions = {
|
||||
const mutations = {
|
||||
addTransaction(state) {
|
||||
let newTransaction = lodashClonedeep(state.defaultTransaction);
|
||||
newTransaction.errors = lodashClonedeep(state.defaultErrors);
|
||||
state.transactions.push(newTransaction);
|
||||
},
|
||||
resetErrors(state, payload) {
|
||||
console.log('resetErrors for index ' + payload.index);
|
||||
state.transactions[payload.index].errors = lodashClonedeep(state.defaultErrors);
|
||||
},
|
||||
setDate(state, payload) {
|
||||
state.date = payload.date;
|
||||
},
|
||||
setGroupTitle(state, payload) {
|
||||
state.groupTitle = payload.groupTitle;
|
||||
},
|
||||
setCustomDateFields(state, payload) {
|
||||
state.customDateFields = payload;
|
||||
},
|
||||
@ -208,6 +234,11 @@ const mutations = {
|
||||
updateField(state, payload) {
|
||||
state.transactions[payload.index][payload.field] = payload.value;
|
||||
},
|
||||
setTransactionError(state, payload) {
|
||||
console.log('Will set transactions[' + payload.index + '][errors][' + payload.field + '] to ');
|
||||
console.log(payload.errors);
|
||||
state.transactions[payload.index].errors[payload.field] = payload.errors;
|
||||
},
|
||||
setDestinationAllowedTypes(state, payload) {
|
||||
// console.log('Destination allowed types was changed!');
|
||||
state.destinationAllowedTypes = payload;
|
||||
|
@ -20,182 +20,251 @@
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<div class="row" v-for="(transaction, index) in this.transactions">
|
||||
<div class="alert alert-danger alert-dismissible" v-if="this.errorMessage.length > 0">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||
<h5><i class="icon fas fa-ban"></i> {{ $t("firefly.flash_error") }}</h5>
|
||||
{{ errorMessage }}
|
||||
</div>
|
||||
|
||||
<div class="row" v-if="transactions.length > 1">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<!-- tabs -->
|
||||
<ul class="nav nav-pills ml-auto p-2">
|
||||
<li v-for="(transaction, index) in this.transactions" class="nav-item"><a :class="'nav-link' + (0===index ? ' active' : '')" :href="'#split_' + index"
|
||||
data-toggle="tab">
|
||||
<span v-if="'' !== transaction.description">{{ transaction.description }}</span>
|
||||
<span v-if="'' === transaction.description">Split {{ index + 1 }}</span>
|
||||
</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-content">
|
||||
<div v-for="(transaction, index) in this.transactions" :class="'tab-pane' + (0===index ? ' active' : '')" :id="'split_' + index">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">
|
||||
{{ $t('firefly.basic_journal_information') }}
|
||||
<span v-if="transactions.length > 1">({{ index + 1 }} / {{ transactions.length }}) </span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<!-- start of body -->
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<TransactionDescription
|
||||
v-model="transaction.description"
|
||||
:index="index"
|
||||
:errors="transaction.errors.description"
|
||||
></TransactionDescription>
|
||||
</div>
|
||||
</div>
|
||||
<!-- source and destination -->
|
||||
<div class="row">
|
||||
<div class="col-xl-5 col-lg-5 col-md-10 col-sm-12 col-xs-12">
|
||||
<!-- SOURCE -->
|
||||
<TransactionAccount
|
||||
v-model="transaction.source_account"
|
||||
direction="source"
|
||||
:index="index"
|
||||
:errors="transaction.errors.source"
|
||||
/>
|
||||
</div>
|
||||
<!-- switcharoo! -->
|
||||
<div class="col-xl-2 col-lg-2 col-md-2 col-sm-12 text-center d-none d-sm-block">
|
||||
<SwitchAccount
|
||||
:index="index"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- destination -->
|
||||
<div class="col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12">
|
||||
<!-- DESTINATION -->
|
||||
<TransactionAccount
|
||||
v-model="transaction.destination_account"
|
||||
direction="destination"
|
||||
:index="index"
|
||||
:errors="transaction.errors.destination"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- amount -->
|
||||
<div class="row">
|
||||
<div class="col-xl-5 col-lg-5 col-md-10 col-sm-12 col-xs-12">
|
||||
<!-- AMOUNT -->
|
||||
<TransactionAmount :index="index" :errors="transaction.errors.amount"/>
|
||||
<!--
|
||||
|
||||
-->
|
||||
</div>
|
||||
<div class="col-xl-2 col-lg-2 col-md-2 col-sm-12 text-center d-none d-sm-block">
|
||||
<TransactionForeignCurrency :index="index"/>
|
||||
</div>
|
||||
<div class="col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12">
|
||||
<TransactionForeignAmount :index="index" :errors="transaction.errors.foreign_amount"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- dates -->
|
||||
<div class="row">
|
||||
<div class="col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12">
|
||||
<TransactionDate
|
||||
:index="index"
|
||||
:errors="transaction.errors.date"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12 offset-xl-2 offset-lg-2">
|
||||
<TransactionCustomDates :index="index" :enabled-dates="customDateFields" :errors="transaction.errors.custom_dates"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- end of body -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end of basic card -->
|
||||
|
||||
<!-- card for meta -->
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">
|
||||
{{ $t('firefly.transaction_journal_meta') }}
|
||||
<span v-if="transactions.length > 1">({{ index + 1 }} / {{ transactions.length }}) </span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<!-- start of body -->
|
||||
<!-- meta -->
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<TransactionBudget
|
||||
v-model="transaction.budget_id"
|
||||
:index="index"
|
||||
:errors="transaction.errors.budget"
|
||||
/>
|
||||
<TransactionCategory
|
||||
v-model="transaction.category"
|
||||
:index="index"
|
||||
:errors="transaction.errors.category"
|
||||
/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<TransactionBill
|
||||
v-model="transaction.bill_id"
|
||||
:index="index"
|
||||
:errors="transaction.errors.bill"
|
||||
/>
|
||||
<TransactionTags
|
||||
:index="index"
|
||||
v-model="transaction.tags"
|
||||
:errors="transaction.errors.tags"
|
||||
/>
|
||||
<TransactionPiggyBank
|
||||
:index="index"
|
||||
v-model="transaction.piggy_bank_id"
|
||||
:errors="transaction.errors.piggy_bank"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end card for meta -->
|
||||
<!-- card for extra -->
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">
|
||||
{{ $t('firefly.transaction_journal_meta') }}
|
||||
<span v-if="transactions.length > 1">({{ index + 1 }} / {{ transactions.length }}) </span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<!-- start of body -->
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<TransactionInternalReference
|
||||
:index="index"
|
||||
v-model="transaction.internal_reference"
|
||||
/>
|
||||
|
||||
<TransactionExternalUrl
|
||||
:index="index"
|
||||
v-model="transaction.external_url"
|
||||
/>
|
||||
<TransactionNotes
|
||||
:index="index"
|
||||
v-model="transaction.notes"
|
||||
/>
|
||||
</div>
|
||||
<div class="col">
|
||||
|
||||
<TransactionAttachments
|
||||
:index="index"
|
||||
v-model="transaction.attachments"
|
||||
/>
|
||||
|
||||
<TransactionLinks :index="index"
|
||||
v-model="transaction.links"
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- end of body -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end card for extra -->
|
||||
<!-- end of card -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<!-- group title -->
|
||||
<div class="col">
|
||||
<div class="card" v-if="transactions.length > 1">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">
|
||||
<span v-if="1 === transactions.length">{{ $t('firefly.create_new_transaction') }}</span>
|
||||
<span v-if="transactions.length > 1">{{ $t('firefly.single_split') }} {{ index + 1 }} / {{ transactions.length }}</span>
|
||||
{{ $t('firefly.split_transaction_title') }}
|
||||
</h3>
|
||||
<div v-if="transactions.length > 1" class="card-tools">
|
||||
<button class="btn btn-xs btn-danger" type="button" v-on:click="removeTransaction(index)"><i
|
||||
class="fa fa-trash"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.card-header -->
|
||||
<div class="card-body">
|
||||
<h5>{{ $t('firefly.basic_journal_information') }}</h5>
|
||||
<!-- description etc, 3 rows -->
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<TransactionDescription
|
||||
v-model="transaction.description"
|
||||
:index="index"
|
||||
></TransactionDescription>
|
||||
<TransactionGroupTitle v-model="this.groupTitle"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- source and destination -->
|
||||
<div class="row">
|
||||
<div class="col-xl-5 col-lg-5 col-md-10 col-sm-12 col-xs-12">
|
||||
<!-- SOURCE -->
|
||||
<TransactionAccount
|
||||
v-model="transaction.source_account"
|
||||
direction="source"
|
||||
:index="index"
|
||||
/>
|
||||
</div>
|
||||
<!-- switcharoo! -->
|
||||
<div class="col-xl-2 col-lg-2 col-md-2 col-sm-12 text-center d-none d-sm-block">
|
||||
<SwitchAccount
|
||||
:index="index"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- destination -->
|
||||
<div class="col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12">
|
||||
<!-- DESTINATION -->
|
||||
<TransactionAccount
|
||||
v-model="transaction.destination_account"
|
||||
direction="destination"
|
||||
:index="index"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- amount -->
|
||||
<div class="row">
|
||||
<div class="col-xl-5 col-lg-5 col-md-10 col-sm-12 col-xs-12">
|
||||
<!-- AMOUNT -->
|
||||
<TransactionAmount :index="index"/>
|
||||
<!--
|
||||
|
||||
-->
|
||||
</div>
|
||||
<div class="col-xl-2 col-lg-2 col-md-2 col-sm-12 text-center d-none d-sm-block">
|
||||
<TransactionForeignCurrency :index="index"/>
|
||||
</div>
|
||||
<div class="col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12">
|
||||
<TransactionForeignAmount :index="index"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- dates -->
|
||||
<div class="row">
|
||||
<div class="col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12">
|
||||
<TransactionDate
|
||||
:index="index"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12 offset-xl-2 offset-lg-2">
|
||||
<TransactionCustomDates :index="index" :enabled-dates="customDateFields"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4>{{ $t('firefly.transaction_journal_meta') }}</h4>
|
||||
|
||||
<!-- meta -->
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<TransactionBudget
|
||||
v-model="transaction.budget_id"
|
||||
:index="index"
|
||||
/>
|
||||
<TransactionCategory
|
||||
v-model="transaction.category"
|
||||
:index="index"
|
||||
/>
|
||||
</div>
|
||||
<div class="col">
|
||||
<TransactionBill
|
||||
v-model="transaction.bill_id"
|
||||
:index="index"
|
||||
/>
|
||||
<TransactionTags
|
||||
:index="index"
|
||||
v-model="transaction.tags"
|
||||
/>
|
||||
<TransactionPiggyBank
|
||||
:index="index"
|
||||
v-model="transaction.piggy_bank_id"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4>{{ $t('firefly.transaction_journal_extra') }}</h4>
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<TransactionInternalReference
|
||||
:index="index"
|
||||
v-model="transaction.internal_reference"
|
||||
/>
|
||||
|
||||
<TransactionExternalUrl
|
||||
:index="index"
|
||||
v-model="transaction.external_url"
|
||||
/>
|
||||
<TransactionNotes
|
||||
:index="index"
|
||||
v-model="transaction.notes"
|
||||
/>
|
||||
</div>
|
||||
<div class="col">
|
||||
|
||||
<TransactionAttachments
|
||||
:index="index"
|
||||
v-model="transaction.attachments"
|
||||
/>
|
||||
|
||||
<TransactionLinks :index="index"
|
||||
v-model="transaction.links"
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- /.card-body -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<!-- buttons! -->
|
||||
<div class="col">
|
||||
<p>
|
||||
<button @click="addTransaction" class="btn btn-primary"><i class="far fa-clone"></i> {{ $t('firefly.add_another_split') }}</button>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="float-right">
|
||||
<button @click="submitTransaction" :disabled="isSubmitting" class="btn btn-success"><i class="far fa-save"></i> Store transaction</button>
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- buttons -->
|
||||
<!-- button -->
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<button @click="addTransaction" class="btn btn-primary">{{ $t('firefly.add_another_split') }}</button>
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="float-right">
|
||||
<button @click="submitTransaction" :disabled="isSubmitting" class="btn btn-success">Store transaction</button>
|
||||
<br/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col float-right">
|
||||
<p class="text-right">
|
||||
<small class="text-muted">Create another another another <input type="checkbox"/></small><br/>
|
||||
<small class="text-muted">Return here <input type="checkbox"/></small><br/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -219,17 +288,17 @@ import TransactionExternalUrl from "./TransactionExternalUrl";
|
||||
import TransactionNotes from "./TransactionNotes";
|
||||
import TransactionLinks from "./TransactionLinks";
|
||||
import TransactionAttachments from "./TransactionAttachments";
|
||||
|
||||
import TransactionGroupTitle from "./TransactionGroupTitle";
|
||||
|
||||
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
|
||||
|
||||
|
||||
export default {
|
||||
name: "Create",
|
||||
components: {
|
||||
TransactionAttachments,
|
||||
TransactionNotes,
|
||||
TransactionExternalUrl,
|
||||
TransactionGroupTitle,
|
||||
TransactionInternalReference,
|
||||
TransactionPiggyBank,
|
||||
TransactionTags,
|
||||
@ -248,10 +317,9 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
groupTitle: '',
|
||||
isSubmitting: false,
|
||||
linkSearchResults: [],
|
||||
errorMessage: null,
|
||||
errorMessage: '',
|
||||
successMessage: null,
|
||||
}
|
||||
},
|
||||
@ -260,7 +328,8 @@ export default {
|
||||
'transactionType', // -> this.someGetter
|
||||
'transactions', // -> this.someOtherGetter
|
||||
'customDateFields',
|
||||
'date'
|
||||
'date',
|
||||
'groupTitle'
|
||||
])
|
||||
},
|
||||
methods: {
|
||||
@ -270,10 +339,11 @@ export default {
|
||||
'deleteTransaction',
|
||||
'setAllowedOpposingTypes',
|
||||
'setAccountToTransaction',
|
||||
'setTransactionError',
|
||||
'resetErrors'
|
||||
],
|
||||
),
|
||||
removeTransaction: function (index) {
|
||||
// store.commit('addCustomer'
|
||||
this.$store.commit('transactions/create/deleteTransaction', {index: index});
|
||||
},
|
||||
storeCustomDateFields: function () {
|
||||
@ -322,17 +392,27 @@ export default {
|
||||
|
||||
axios.post(url, data)
|
||||
.then(response => {
|
||||
console.log('Axios post OK');
|
||||
console.log('Axios post OK!');
|
||||
console.log(response);
|
||||
})
|
||||
.catch(error => {
|
||||
console.log('Error in transaction submission.');
|
||||
//console.log('Error in transaction submission.');
|
||||
this.parseErrors(error.response.data);
|
||||
});
|
||||
this.isSubmitting = false;
|
||||
},
|
||||
|
||||
parseErrors: function(errors) {
|
||||
// set the error message:
|
||||
parseErrors: function (errors) {
|
||||
console.log('parseErrors()');
|
||||
console.log(errors.errors);
|
||||
//this.setTransactionError({index: 0, field: 'date', errors: ['I AM ERRROR']});
|
||||
|
||||
// reset errors
|
||||
for (let i in this.transactions) {
|
||||
console.log('reset errors for index ' + i);
|
||||
this.resetErrors({index: i});
|
||||
}
|
||||
|
||||
this.successMessage = null;
|
||||
this.errorMessage = this.$t('firefly.errors_submission');
|
||||
if (typeof errors.errors === 'undefined') {
|
||||
@ -347,40 +427,63 @@ export default {
|
||||
for (const key in errors.errors) {
|
||||
if (errors.errors.hasOwnProperty(key)) {
|
||||
if (key === 'group_title') {
|
||||
this.group_title_errors = errors.errors[key];
|
||||
console.log('cant handle "group_title".');
|
||||
//this.group_title_errors = errors.errors[key];
|
||||
}
|
||||
if (key !== 'group_title') {
|
||||
// lol dumbest way to explode "transactions.0.something" ever.
|
||||
transactionIndex = parseInt(key.split('.')[1]);
|
||||
|
||||
fieldName = key.split('.')[2];
|
||||
// set error in this object thing.
|
||||
console.log('Found an error for transactions[' + transactionIndex + '][' + fieldName + ']');
|
||||
let payload;
|
||||
switch (fieldName) {
|
||||
case 'amount':
|
||||
case 'date':
|
||||
case 'budget_id':
|
||||
case 'bill_id':
|
||||
case 'description':
|
||||
case 'date':
|
||||
case 'tags':
|
||||
//this.transactions[transactionIndex].errors[fieldName] = errors.errors[key];
|
||||
payload = {index: transactionIndex, field: fieldName, errors: errors.errors[key]};
|
||||
this.setTransactionError(payload);
|
||||
break;
|
||||
case 'budget_id':
|
||||
payload = {index: transactionIndex, field: 'budget', errors: errors.errors[key]};
|
||||
this.setTransactionError(payload);
|
||||
break;
|
||||
case 'bill_id':
|
||||
payload = {index: transactionIndex, field: 'bill', errors: errors.errors[key]};
|
||||
this.setTransactionError(payload);
|
||||
break;
|
||||
case 'piggy_bank_id':
|
||||
payload = {index: transactionIndex, field: 'piggy_bank', errors: errors.errors[key]};
|
||||
this.setTransactionError(payload);
|
||||
break;
|
||||
case 'category_name':
|
||||
payload = {index: transactionIndex, field: 'category', errors: errors.errors[key]};
|
||||
this.setTransactionError(payload);
|
||||
break;
|
||||
case 'source_name':
|
||||
case 'source_id':
|
||||
//this.transactions[transactionIndex].errors.source_account = this.transactions[transactionIndex].errors.source_account.concat(errors.errors[key]);
|
||||
payload = {index: transactionIndex, field: 'source', errors: errors.errors[key]};
|
||||
this.setTransactionError(payload);
|
||||
break;
|
||||
case 'destination_name':
|
||||
case 'destination_id':
|
||||
//this.transactions[transactionIndex].errors.destination_account = this.transactions[transactionIndex].errors.destination_account.concat(errors.errors[key]);
|
||||
payload = {index: transactionIndex, field: 'destination', errors: errors.errors[key]};
|
||||
this.setTransactionError(payload);
|
||||
break;
|
||||
case 'foreign_amount':
|
||||
case 'foreign_currency_id':
|
||||
//this.transactions[transactionIndex].errors.foreign_amount = this.transactions[transactionIndex].errors.foreign_amount.concat(errors.errors[key]);
|
||||
case 'foreign_currency':
|
||||
payload = {index: transactionIndex, field: 'foreign_amount', errors: errors.errors[key]};
|
||||
this.setTransactionError(payload);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// unique some things
|
||||
if (typeof this.transactions[transactionIndex] !== 'undefined') {
|
||||
//this.transactions[transactionIndex].errors.source_account = Array.from(new Set(this.transactions[transactionIndex].errors.source_account));
|
||||
//this.transactions[transactionIndex].errors.destination_account = Array.from(new Set(this.transactions[transactionIndex].errors.destination_account));
|
||||
// TODO
|
||||
//this.transactions[transactionIndex].errors.source = Array.from(new Set(this.transactions[transactionIndex].errors.source));
|
||||
//this.transactions[transactionIndex].errors.destination = Array.from(new Set(this.transactions[transactionIndex].errors.destination));
|
||||
}
|
||||
|
||||
}
|
||||
@ -394,9 +497,11 @@ export default {
|
||||
convertData: function () {
|
||||
console.log('now in convertData');
|
||||
let data = {
|
||||
//'group_title': null,
|
||||
'transactions': []
|
||||
};
|
||||
if (this.groupTitle.length > 0) {
|
||||
data.group_title = this.groupTitle;
|
||||
}
|
||||
for (let key in this.transactions) {
|
||||
if (this.transactions.hasOwnProperty(key) && /^0$|^[1-9]\d*$/.test(key) && key <= 4294967294) {
|
||||
data.transactions.push(this.convertSplit(key, this.transactions[key]));
|
||||
@ -404,18 +509,20 @@ export default {
|
||||
}
|
||||
return data;
|
||||
},
|
||||
|
||||
/**
|
||||
*
|
||||
* @param key
|
||||
* @param array
|
||||
*/
|
||||
convertSplit: function (key, array) {
|
||||
console.log('now in convertSplit');
|
||||
let dateStr = 'invalid';
|
||||
if (this.date instanceof Date && !isNaN(this.date)) {
|
||||
dateStr = this.toW3CString(this.date);
|
||||
}
|
||||
let currentSplit = {
|
||||
// basic
|
||||
description: array.description,
|
||||
date: this.toW3CString(this.date),
|
||||
date: dateStr,
|
||||
type: this.transactionType,
|
||||
|
||||
// account
|
||||
@ -427,16 +534,11 @@ export default {
|
||||
// amount:
|
||||
currency_id: array.currency_id,
|
||||
amount: array.amount,
|
||||
foreign_currency_id: array.foreign_currency_id,
|
||||
foreign_amount: array.foreign_amount,
|
||||
|
||||
|
||||
// meta data
|
||||
budget_id: array.budget_id,
|
||||
category_name: array.category,
|
||||
bill_id: array.bill_id,
|
||||
tags: array.tags,
|
||||
piggy_bank_id: array.piggy_bank_id,
|
||||
|
||||
// optional date fields (6x):
|
||||
interest_date: array.interest_date,
|
||||
@ -456,6 +558,21 @@ export default {
|
||||
order: 0,
|
||||
reconciled: false,
|
||||
};
|
||||
// bills and piggy banks
|
||||
if (0 !== array.piggy_bank_id) {
|
||||
currentSplit.piggy_bank_id = array.piggy_bank_id;
|
||||
}
|
||||
if (0 !== array.bill_id) {
|
||||
currentSplit.bill_id = array.bill_id;
|
||||
}
|
||||
|
||||
// foreign amount:
|
||||
if (0 !== array.foreign_currency_id) {
|
||||
currentSplit.foreign_currency_id = array.foreign_currency_id;
|
||||
}
|
||||
if ('' !== array.foreign_amount) {
|
||||
currentSplit.foreign_amount = array.foreign_amount;
|
||||
}
|
||||
|
||||
// do transaction type
|
||||
let transactionType;
|
||||
@ -463,22 +580,26 @@ export default {
|
||||
let firstDestination;
|
||||
|
||||
// get transaction type from first transaction
|
||||
transactionType = this.transactionType ? this.transactionType.toLowerCase() : 'invalid';
|
||||
|
||||
transactionType = this.transactionType ? this.transactionType.toLowerCase() : 'any';
|
||||
console.log('Transaction type is now ' + transactionType);
|
||||
// if the transaction type is invalid, might just be that we can deduce it from
|
||||
// the presence of a source or destination account
|
||||
firstSource = this.transactions[0].source_account.type;
|
||||
firstDestination = this.transactions[0].destination_account.type;
|
||||
// console.log('Type of first source is ' + firstSource);
|
||||
console.log(this.transactions[0].source_account);
|
||||
console.log(this.transactions[0].destination_account);
|
||||
console.log('Type of first source is ' + firstSource);
|
||||
console.log('Type of first destination is ' + firstDestination);
|
||||
|
||||
if ('invalid' === transactionType && ['asset', 'Asset account', 'Loan', 'Debt', 'Mortgage'].includes(firstSource)) {
|
||||
if ('any' === transactionType && ['asset', 'Asset account', 'Loan', 'Debt', 'Mortgage'].includes(firstSource)) {
|
||||
transactionType = 'withdrawal';
|
||||
}
|
||||
|
||||
if ('invalid' === transactionType && ['asset', 'Asset account', 'Loan', 'Debt', 'Mortgage'].includes(firstDestination)) {
|
||||
if ('any' === transactionType && ['asset', 'Asset account', 'Loan', 'Debt', 'Mortgage'].includes(firstDestination)) {
|
||||
transactionType = 'deposit';
|
||||
}
|
||||
currentSplit.type = transactionType;
|
||||
console.log('Final type is ' + transactionType);
|
||||
|
||||
let links = [];
|
||||
for (let i in array.links) {
|
||||
@ -542,16 +663,6 @@ export default {
|
||||
offsetSign + offsetHours + ':' + offsetMinutes;
|
||||
}
|
||||
|
||||
// addTransactionToArray: function (e) {
|
||||
// console.log('Now in addTransactionToArray()');
|
||||
// this.$store.
|
||||
//
|
||||
// this.transactions.push({
|
||||
// description: '',
|
||||
// });
|
||||
// if (e) {
|
||||
// e.preventDefault();
|
||||
// }
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
@ -27,6 +27,7 @@
|
||||
v-model="value.name"
|
||||
:data="accounts"
|
||||
:showOnFocus=true
|
||||
:inputClass="errors.length > 0 ? 'is-invalid' : ''"
|
||||
:inputName="direction + '[]'"
|
||||
:serializer="item => item.name_with_balance"
|
||||
:minMatchingChars="3"
|
||||
@ -39,9 +40,10 @@
|
||||
<button class="btn btn-outline-secondary" v-on:click="clearAccount" type="button"><i class="far fa-trash-alt"></i></button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
</vue-typeahead-bootstrap>
|
||||
<span v-if="errors.length > 0">
|
||||
<span v-for="error in errors" class="text-danger small">{{ error }}<br/></span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -56,7 +58,7 @@ const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers
|
||||
export default {
|
||||
name: "TransactionAccount",
|
||||
components: {VueTypeaheadBootstrap},
|
||||
props: ['index', 'direction', 'value'],
|
||||
props: ['index', 'direction', 'value', 'errors'],
|
||||
data() {
|
||||
return {
|
||||
query: '',
|
||||
|
@ -29,13 +29,16 @@
|
||||
<input
|
||||
:title="$t('firefly.amount')"
|
||||
autocomplete="off"
|
||||
class="form-control"
|
||||
:class="errors.length > 0 ? 'form-control is-invalid' : 'form-control'"
|
||||
name="amount[]"
|
||||
type="number"
|
||||
v-model="amount"
|
||||
:placeholder="$t('firefly.amount')"
|
||||
>
|
||||
</div>
|
||||
<span v-if="errors.length > 0">
|
||||
<span v-for="error in errors" class="text-danger small">{{ error }}<br/></span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -49,7 +52,7 @@ const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers
|
||||
|
||||
export default {
|
||||
name: "TransactionAmount",
|
||||
props: ['index'],
|
||||
props: ['index', 'errors'],
|
||||
data() {
|
||||
return {
|
||||
currencySymbol: ''
|
||||
|
@ -28,7 +28,6 @@
|
||||
type="file"
|
||||
multiple
|
||||
name="attachments[]"
|
||||
:placeholder="$t('firefly.attachment')"
|
||||
class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -29,7 +29,7 @@
|
||||
:title="$t('firefly.bill')"
|
||||
v-model="value"
|
||||
autocomplete="off"
|
||||
class="form-control"
|
||||
:class="errors.length > 0 ? 'form-control is-invalid' : 'form-control'"
|
||||
name="bill_id[]"
|
||||
v-on:submit.prevent
|
||||
>
|
||||
@ -37,6 +37,9 @@
|
||||
|
||||
</select>
|
||||
</div>
|
||||
<span v-if="errors.length > 0">
|
||||
<span v-for="error in errors" class="text-danger small">{{ error }}<br/></span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -47,7 +50,7 @@ import {createNamespacedHelpers} from "vuex";
|
||||
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
|
||||
|
||||
export default {
|
||||
props: ['value', 'index'],
|
||||
props: ['value', 'index', 'errors'],
|
||||
name: "TransactionBill",
|
||||
data() {
|
||||
return {
|
||||
@ -94,16 +97,16 @@ export default {
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
value: function(value) {
|
||||
value: function (value) {
|
||||
this.updateField({field: 'bill_id', index: this.index, value: value});
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(
|
||||
[
|
||||
'transactionType',
|
||||
'transactions',
|
||||
]
|
||||
'transactionType',
|
||||
'transactions',
|
||||
]
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -29,13 +29,16 @@
|
||||
:title="$t('firefly.budget')"
|
||||
v-model="value"
|
||||
autocomplete="off"
|
||||
class="form-control"
|
||||
:class="errors.length > 0 ? 'form-control is-invalid' : 'form-control'"
|
||||
name="budget_id[]"
|
||||
v-on:submit.prevent
|
||||
>
|
||||
<option v-for="budget in this.budgetList" :value="budget.id" :label="budget.name">{{ budget.name }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<span v-if="errors.length > 0">
|
||||
<span v-for="error in errors" class="text-danger small">{{ error }}<br/></span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -46,7 +49,7 @@ import {createNamespacedHelpers} from "vuex";
|
||||
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
|
||||
|
||||
export default {
|
||||
props: ['index', 'value'],
|
||||
props: ['index', 'value', 'errors'],
|
||||
name: "TransactionBudget",
|
||||
data() {
|
||||
return {
|
||||
|
@ -30,6 +30,7 @@
|
||||
:data="categories"
|
||||
:placeholder="$t('firefly.category')"
|
||||
:showOnFocus=true
|
||||
:inputClass="errors.length > 0 ? 'is-invalid' : ''"
|
||||
:minMatchingChars="3"
|
||||
:serializer="item => item.name"
|
||||
@hit="selectedCategory = $event"
|
||||
@ -41,7 +42,9 @@
|
||||
</div>
|
||||
</template>
|
||||
</vue-typeahead-bootstrap>
|
||||
|
||||
<span v-if="errors.length > 0">
|
||||
<span v-for="error in errors" class="text-danger small">{{ error }}<br/></span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -54,7 +57,7 @@ import {debounce} from "lodash";
|
||||
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
|
||||
|
||||
export default {
|
||||
props: ['value', 'index'],
|
||||
props: ['value', 'index', 'errors'],
|
||||
components: {VueTypeaheadBootstrap},
|
||||
name: "TransactionCategory",
|
||||
data() {
|
||||
|
@ -43,12 +43,13 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// TODO: error handling
|
||||
import {createNamespacedHelpers} from "vuex";
|
||||
|
||||
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
|
||||
export default {
|
||||
name: "TransactionCustomDates",
|
||||
props: ['enabledDates', 'index'],
|
||||
props: ['enabledDates', 'index', 'errors'],
|
||||
methods: {
|
||||
...mapGetters(
|
||||
[
|
||||
|
@ -25,7 +25,7 @@
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<input
|
||||
class="form-control"
|
||||
:class="errors.length > 0 ? 'form-control is-invalid' : 'form-control'"
|
||||
type="date"
|
||||
ref="date"
|
||||
:title="$t('firefly.date')"
|
||||
@ -34,10 +34,9 @@
|
||||
autocomplete="off"
|
||||
name="date[]"
|
||||
:placeholder="localDate"
|
||||
v-on:submit.prevent
|
||||
>
|
||||
<input
|
||||
class="form-control"
|
||||
:class="errors.length > 0 ? 'form-control is-invalid' : 'form-control'"
|
||||
type="time"
|
||||
ref="time"
|
||||
:title="$t('firefly.time')"
|
||||
@ -46,9 +45,11 @@
|
||||
autocomplete="off"
|
||||
name="time[]"
|
||||
:placeholder="localTime"
|
||||
v-on:submit.prevent
|
||||
>
|
||||
</div>
|
||||
<span v-if="errors.length > 0">
|
||||
<span v-for="error in errors" class="text-danger small">{{ error }}<br/></span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -59,8 +60,8 @@ import {createNamespacedHelpers} from "vuex";
|
||||
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
|
||||
|
||||
export default {
|
||||
props: ['index', 'errors'],
|
||||
name: "TransactionDate",
|
||||
props: ['index'],
|
||||
methods: {
|
||||
...mapMutations(
|
||||
[
|
||||
@ -70,13 +71,19 @@ export default {
|
||||
),
|
||||
},
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'transactionType',
|
||||
'date'
|
||||
]),
|
||||
...mapGetters(
|
||||
[
|
||||
'transactionType',
|
||||
'date',
|
||||
'transactions'
|
||||
]
|
||||
),
|
||||
localDate: {
|
||||
get() {
|
||||
return this.date.toISOString().split('T')[0];
|
||||
if (this.date instanceof Date && !isNaN(this.date)) {
|
||||
return this.date.toISOString().split('T')[0];
|
||||
}
|
||||
return '';
|
||||
},
|
||||
set(value) {
|
||||
// bit of a hack but meh.
|
||||
@ -90,7 +97,10 @@ export default {
|
||||
},
|
||||
localTime: {
|
||||
get() {
|
||||
return ('0' + this.date.getHours()).slice(-2) + ':' + ('0' + this.date.getMinutes()).slice(-2) + ':' + ('0' + this.date.getSeconds()).slice(-2);
|
||||
if (this.date instanceof Date && !isNaN(this.date)) {
|
||||
return ('0' + this.date.getHours()).slice(-2) + ':' + ('0' + this.date.getMinutes()).slice(-2) + ':' + ('0' + this.date.getSeconds()).slice(-2);
|
||||
}
|
||||
return '';
|
||||
},
|
||||
set(value) {
|
||||
// bit of a hack but meh.
|
||||
@ -105,7 +115,3 @@ export default {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
@ -20,9 +20,6 @@
|
||||
|
||||
<template>
|
||||
<div class="form-group">
|
||||
<div class="text-xs d-none d-lg-block d-xl-block">
|
||||
{{ $t('firefly.description') }}
|
||||
</div>
|
||||
<vue-typeahead-bootstrap
|
||||
inputName="description[]"
|
||||
v-model="value"
|
||||
@ -30,6 +27,7 @@
|
||||
:placeholder="$t('firefly.description')"
|
||||
:showOnFocus=true
|
||||
autofocus
|
||||
:inputClass="errors.length > 0 ? 'is-invalid' : ''"
|
||||
:minMatchingChars="3"
|
||||
:serializer="item => item.description"
|
||||
@input="lookupDescription"
|
||||
@ -40,13 +38,14 @@
|
||||
</div>
|
||||
</template>
|
||||
</vue-typeahead-bootstrap>
|
||||
<span v-if="errors.length > 0">
|
||||
<span v-for="error in errors" class="text-danger small">{{ error }}<br/></span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
import {createNamespacedHelpers} from "vuex";
|
||||
import VueTypeaheadBootstrap from 'vue-typeahead-bootstrap';
|
||||
import {debounce} from "lodash";
|
||||
@ -54,7 +53,7 @@ import {debounce} from "lodash";
|
||||
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
|
||||
|
||||
export default {
|
||||
props: ['index', 'value'],
|
||||
props: ['index', 'value', 'errors'],
|
||||
components: {VueTypeaheadBootstrap},
|
||||
name: "TransactionDescription",
|
||||
data() {
|
||||
@ -63,7 +62,6 @@ export default {
|
||||
initialSet: []
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
axios.get(this.getACURL(''))
|
||||
.then(response => {
|
||||
|
@ -29,7 +29,8 @@
|
||||
name="external_url[]"
|
||||
:placeholder="$t('firefly.external_url')"
|
||||
v-model="value"
|
||||
class="form-control"/>
|
||||
:class="errors.length > 0 ? 'form-control is-invalid' : 'form-control'"
|
||||
/>
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-outline-secondary"><i class="far fa-trash-alt"></i></button>
|
||||
</div>
|
||||
@ -43,7 +44,7 @@ import {createNamespacedHelpers} from "vuex";
|
||||
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
|
||||
|
||||
export default {
|
||||
props: ['index', 'value'],
|
||||
props: ['index', 'value', 'errors'],
|
||||
name: "TransactionExternalUrl",
|
||||
methods: {
|
||||
...mapMutations(
|
||||
|
@ -27,7 +27,7 @@
|
||||
<input
|
||||
:title="$t('form.foreign_amount')"
|
||||
autocomplete="off"
|
||||
class="form-control"
|
||||
:class="errors.length > 0 ? 'form-control is-invalid' : 'form-control'"
|
||||
:disabled="0===currencyId"
|
||||
name="foreign_amount[]"
|
||||
type="number"
|
||||
@ -35,6 +35,9 @@
|
||||
:placeholder="$t('form.foreign_amount')"
|
||||
>
|
||||
</div>
|
||||
<span v-if="errors.length > 0">
|
||||
<span v-for="error in errors" class="text-danger small">{{ error }}<br/></span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -48,7 +51,7 @@ const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers
|
||||
|
||||
export default {
|
||||
name: "TransactionForeignAmount",
|
||||
props: ['index'],
|
||||
props: ['index','errors'],
|
||||
data() {
|
||||
return {
|
||||
currencySymbol: '',
|
||||
|
109
frontend/src/components/transactions/TransactionGroupTitle.vue
Normal file
109
frontend/src/components/transactions/TransactionGroupTitle.vue
Normal file
@ -0,0 +1,109 @@
|
||||
<!--
|
||||
- TransactionGroupTitle.vue
|
||||
- Copyright (c) 2021 james@firefly-iii.org
|
||||
-
|
||||
- This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
-
|
||||
- This program is free software: you can redistribute it and/or modify
|
||||
- it under the terms of the GNU Affero General Public License as
|
||||
- published by the Free Software Foundation, either version 3 of the
|
||||
- License, or (at your option) any later version.
|
||||
-
|
||||
- This program is distributed in the hope that it will be useful,
|
||||
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
- GNU Affero General Public License for more details.
|
||||
-
|
||||
- You should have received a copy of the GNU Affero General Public License
|
||||
- along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<template>
|
||||
<div class="form-group">
|
||||
<div class="text-xs d-none d-lg-block d-xl-block">
|
||||
{{ $t('firefly.split_transaction_title') }}
|
||||
</div>
|
||||
<vue-typeahead-bootstrap
|
||||
inputName="group_title"
|
||||
v-model="value"
|
||||
:data="descriptions"
|
||||
:placeholder="$t('firefly.split_transaction_title')"
|
||||
:showOnFocus=true
|
||||
:minMatchingChars="3"
|
||||
:serializer="item => item.description"
|
||||
@input="lookupDescription"
|
||||
:inputClass="errors.length > 0 ? 'is-invalid' : ''"
|
||||
>
|
||||
<template slot="append">
|
||||
<div class="input-group-append">
|
||||
<button v-on:click="clearDescription" class="btn btn-outline-secondary" type="button"><i class="far fa-trash-alt"></i></button>
|
||||
</div>
|
||||
</template>
|
||||
</vue-typeahead-bootstrap>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import VueTypeaheadBootstrap from 'vue-typeahead-bootstrap';
|
||||
import {debounce} from "lodash";
|
||||
import {createNamespacedHelpers} from "vuex";
|
||||
|
||||
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
|
||||
export default {
|
||||
props: ['value', 'errors'],
|
||||
name: "TransactionGroupTitle",
|
||||
components: {VueTypeaheadBootstrap},
|
||||
data() {
|
||||
return {
|
||||
descriptions: [],
|
||||
initialSet: []
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
axios.get(this.getACURL(''))
|
||||
.then(response => {
|
||||
this.descriptions = response.data;
|
||||
this.initialSet = response.data;
|
||||
});
|
||||
},
|
||||
watch: {
|
||||
value: function (value) {
|
||||
console.log('set');
|
||||
this.setGroupTitle({groupTitle: value});
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapMutations(
|
||||
[
|
||||
'setGroupTitle'
|
||||
],
|
||||
),
|
||||
...mapGetters(
|
||||
[
|
||||
'groupTitle'
|
||||
]
|
||||
),
|
||||
clearDescription: function () {
|
||||
console.log('cear');
|
||||
this.setGroupTitle({groupTitle: ''});
|
||||
this.value = '';
|
||||
},
|
||||
getACURL: function (query) {
|
||||
// update autocomplete URL:
|
||||
return document.getElementsByTagName('base')[0].href + 'api/v1/autocomplete/transactions?query=' + query;
|
||||
},
|
||||
lookupDescription: debounce(function () {
|
||||
// update autocomplete URL:
|
||||
axios.get(this.getACURL(this.value))
|
||||
.then(response => {
|
||||
this.descriptions = response.data;
|
||||
})
|
||||
}, 300)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
@ -29,7 +29,8 @@
|
||||
name="internal_reference[]"
|
||||
v-model="value"
|
||||
:placeholder="$t('firefly.internal_reference')"
|
||||
class="form-control"/>
|
||||
:class="errors.length > 0 ? 'form-control is-invalid' : 'form-control'"
|
||||
/>
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-outline-secondary"><i class="far fa-trash-alt"></i></button>
|
||||
</div>
|
||||
@ -43,7 +44,7 @@ import {createNamespacedHelpers} from "vuex";
|
||||
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
|
||||
|
||||
export default {
|
||||
props: ['index', 'value'],
|
||||
props: ['index', 'value', 'errors'],
|
||||
name: "TransactionInternalReference",
|
||||
methods: {
|
||||
...mapMutations(
|
||||
|
@ -184,8 +184,9 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// TODO error handling
|
||||
export default {
|
||||
props: ['index', 'value'],
|
||||
props: ['index', 'value', 'errors'],
|
||||
name: "TransactionLinks",
|
||||
data() {
|
||||
return {
|
||||
|
@ -25,7 +25,11 @@
|
||||
{{ $t('firefly.notes') }}
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<textarea v-model="value" class="form-control" :placeholder="$t('firefly.notes')"></textarea>
|
||||
<textarea
|
||||
v-model="value"
|
||||
:class="errors.length > 0 ? 'form-control is-invalid' : 'form-control'"
|
||||
:placeholder="$t('firefly.notes')"
|
||||
></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -37,7 +41,7 @@ import {createNamespacedHelpers} from "vuex";
|
||||
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
|
||||
|
||||
export default {
|
||||
props: ['index', 'value'],
|
||||
props: ['index', 'value', 'errors'],
|
||||
name: "TransactionNotes",
|
||||
methods: {
|
||||
...mapMutations(
|
||||
|
@ -29,7 +29,7 @@
|
||||
:title="$t('firefly.piggy_bank')"
|
||||
v-model="value"
|
||||
autocomplete="off"
|
||||
class="form-control"
|
||||
:class="errors.length > 0 ? 'form-control is-invalid' : 'form-control'"
|
||||
name="piggy_bank_id[]"
|
||||
v-on:submit.prevent
|
||||
>
|
||||
@ -37,6 +37,9 @@
|
||||
|
||||
</select>
|
||||
</div>
|
||||
<span v-if="errors.length > 0">
|
||||
<span v-for="error in errors" class="text-danger small">{{ error }}<br/></span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -47,7 +50,7 @@ import {createNamespacedHelpers} from "vuex";
|
||||
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
|
||||
|
||||
export default {
|
||||
props: ['index', 'value'],
|
||||
props: ['index', 'value', 'errors'],
|
||||
name: "TransactionPiggyBank",
|
||||
data() {
|
||||
return {
|
||||
|
@ -34,6 +34,9 @@
|
||||
@tags-changed="newTags => this.tags = newTags"
|
||||
/>
|
||||
</div>
|
||||
<span v-if="errors.length > 0">
|
||||
<span v-for="error in errors" class="text-danger small">{{ error }}<br/></span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -49,7 +52,7 @@ export default {
|
||||
components: {
|
||||
VueTagsInput
|
||||
},
|
||||
props: ['value', 'index'],
|
||||
props: ['value', 'index', 'errors'],
|
||||
data() {
|
||||
return {
|
||||
autocompleteItems: [],
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "\u0422\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u043d\u0438 \u0431\u044e\u0434\u0436\u0435\u0442\u0438",
|
||||
"half_year_budgets": "\u0428\u0435\u0441\u0442\u043c\u0435\u0441\u0435\u0447\u043d\u0438 \u0431\u044e\u0434\u0436\u0435\u0442\u0438",
|
||||
"yearly_budgets": "\u0413\u043e\u0434\u0438\u0448\u043d\u0438 \u0431\u044e\u0434\u0436\u0435\u0442\u0438",
|
||||
"split_transaction_title": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f",
|
||||
"errors_submission": "\u0418\u043c\u0430\u0448\u0435 \u043d\u0435\u0449\u043e \u043d\u0435\u0440\u0435\u0434\u043d\u043e \u0441 \u0432\u0430\u0448\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u0438. \u041c\u043e\u043b\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u0442\u0435 \u0433\u0440\u0435\u0448\u043a\u0438\u0442\u0435.",
|
||||
"flash_error": "\u0413\u0440\u0435\u0448\u043a\u0430!",
|
||||
"other_budgets": "\u0412\u0440\u0435\u043c\u0435\u0432\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0438 \u0431\u044e\u0434\u0436\u0435\u0442\u0438",
|
||||
"journal_links": "\u0412\u0440\u044a\u0437\u043a\u0438 \u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f",
|
||||
"go_to_withdrawals": "\u0412\u0438\u0436\u0442\u0435 \u0442\u0435\u0433\u043b\u0435\u043d\u0438\u044f\u0442\u0430 \u0441\u0438",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Quarterly budgets",
|
||||
"half_year_budgets": "Half-yearly budgets",
|
||||
"yearly_budgets": "Yearly budgets",
|
||||
"split_transaction_title": "Popis roz\u00fa\u010dtov\u00e1n\u00ed",
|
||||
"errors_submission": "There was something wrong with your submission. Please check out the errors.",
|
||||
"flash_error": "Chyba!",
|
||||
"other_budgets": "Custom timed budgets",
|
||||
"journal_links": "Transaction links",
|
||||
"go_to_withdrawals": "Go to your withdrawals",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Quartalsbudgets",
|
||||
"half_year_budgets": "Halbjahresbudgets",
|
||||
"yearly_budgets": "Jahresbudgets",
|
||||
"split_transaction_title": "Beschreibung der Splittbuchung",
|
||||
"errors_submission": "Ihre \u00dcbermittlung ist fehlgeschlagen. Bitte \u00fcberpr\u00fcfen Sie die Fehler.",
|
||||
"flash_error": "Fehler!",
|
||||
"other_budgets": "Zeitlich befristete Budgets",
|
||||
"journal_links": "Buchungsverkn\u00fcpfungen",
|
||||
"go_to_withdrawals": "Ausgaben anzeigen",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "\u03a4\u03c1\u03b9\u03bc\u03b7\u03bd\u03b9\u03b1\u03af\u03bf\u03b9 \u03c0\u03c1\u03bf\u03cb\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03bf\u03af",
|
||||
"half_year_budgets": "\u0395\u03be\u03b1\u03bc\u03b7\u03bd\u03b9\u03b1\u03af\u03bf\u03b9 \u03c0\u03c1\u03bf\u03cb\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03bf\u03af",
|
||||
"yearly_budgets": "\u0395\u03c4\u03ae\u03c3\u03b9\u03bf\u03b9 \u03c0\u03c1\u03bf\u03cb\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03bf\u03af",
|
||||
"split_transaction_title": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03c4\u03b7\u03c2 \u03c3\u03c5\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae\u03c2 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c7\u03c9\u03c1\u03b9\u03c3\u03bc\u03cc",
|
||||
"errors_submission": "\u03a5\u03c0\u03ae\u03c1\u03be\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf \u03bb\u03ac\u03b8\u03bf\u03c2 \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae \u03c3\u03b1\u03c2. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03b1 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03b1.",
|
||||
"flash_error": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1!",
|
||||
"other_budgets": "\u03a0\u03c1\u03bf\u03cb\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03bf\u03af \u03bc\u03b5 \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03ae \u03c0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae",
|
||||
"journal_links": "\u03a3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03b9\u03c2 \u03c3\u03c5\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03ce\u03bd",
|
||||
"go_to_withdrawals": "\u03a0\u03b7\u03b3\u03b1\u03af\u03bd\u03b5\u03c4\u03b5 \u03c3\u03c4\u03b9\u03c2 \u03b1\u03bd\u03b1\u03bb\u03ae\u03c8\u03b5\u03b9\u03c2 \u03c3\u03b1\u03c2",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Quarterly budgets",
|
||||
"half_year_budgets": "Half-yearly budgets",
|
||||
"yearly_budgets": "Yearly budgets",
|
||||
"split_transaction_title": "Description of the split transaction",
|
||||
"errors_submission": "There was something wrong with your submission. Please check out the errors.",
|
||||
"flash_error": "Error!",
|
||||
"other_budgets": "Custom timed budgets",
|
||||
"journal_links": "Transaction links",
|
||||
"go_to_withdrawals": "Go to your withdrawals",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Quarterly budgets",
|
||||
"half_year_budgets": "Half-yearly budgets",
|
||||
"yearly_budgets": "Yearly budgets",
|
||||
"split_transaction_title": "Description of the split transaction",
|
||||
"errors_submission": "There was something wrong with your submission. Please check out the errors.",
|
||||
"flash_error": "Error!",
|
||||
"other_budgets": "Custom timed budgets",
|
||||
"journal_links": "Transaction links",
|
||||
"go_to_withdrawals": "Go to your withdrawals",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Presupuestos trimestrales",
|
||||
"half_year_budgets": "Presupuestos semestrales",
|
||||
"yearly_budgets": "Presupuestos anuales",
|
||||
"split_transaction_title": "Descripci\u00f3n de la transacci\u00f3n dividida",
|
||||
"errors_submission": "Hubo un problema con su env\u00edo. Por favor, compruebe los errores.",
|
||||
"flash_error": "\u00a1Error!",
|
||||
"other_budgets": "Presupuestos de tiempo personalizado",
|
||||
"journal_links": "Enlaces de transacciones",
|
||||
"go_to_withdrawals": "Ir a tus retiradas",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Quarterly budgets",
|
||||
"half_year_budgets": "Half-yearly budgets",
|
||||
"yearly_budgets": "Yearly budgets",
|
||||
"split_transaction_title": "Jaetun tapahtuman kuvaus",
|
||||
"errors_submission": "There was something wrong with your submission. Please check out the errors.",
|
||||
"flash_error": "Virhe!",
|
||||
"other_budgets": "Custom timed budgets",
|
||||
"journal_links": "Tapahtuman linkit",
|
||||
"go_to_withdrawals": "Go to your withdrawals",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Budgets trimestriels",
|
||||
"half_year_budgets": "Budgets semestriels",
|
||||
"yearly_budgets": "Budgets annuels",
|
||||
"split_transaction_title": "Description de l'op\u00e9ration ventil\u00e9e",
|
||||
"errors_submission": "Certaines informations ne sont pas correctes dans votre formulaire. Veuillez v\u00e9rifier les erreurs.",
|
||||
"flash_error": "Erreur !",
|
||||
"other_budgets": "Budgets \u00e0 p\u00e9riode personnalis\u00e9e",
|
||||
"journal_links": "Liens d'op\u00e9ration",
|
||||
"go_to_withdrawals": "Acc\u00e9der \u00e0 vos retraits",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Quarterly budgets",
|
||||
"half_year_budgets": "Half-yearly budgets",
|
||||
"yearly_budgets": "Yearly budgets",
|
||||
"split_transaction_title": "Felosztott tranzakci\u00f3 le\u00edr\u00e1sa",
|
||||
"errors_submission": "There was something wrong with your submission. Please check out the errors.",
|
||||
"flash_error": "Hiba!",
|
||||
"other_budgets": "Custom timed budgets",
|
||||
"journal_links": "Tranzakci\u00f3 \u00f6sszekapcsol\u00e1sok",
|
||||
"go_to_withdrawals": "Ugr\u00e1s a k\u00f6lts\u00e9gekhez",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Bilanci trimestrali",
|
||||
"half_year_budgets": "Bilanci semestrali",
|
||||
"yearly_budgets": "Budget annuali",
|
||||
"split_transaction_title": "Descrizione della transazione suddivisa",
|
||||
"errors_submission": "Errore durante l'invio. Controlla gli errori segnalati qui sotto.",
|
||||
"flash_error": "Errore!",
|
||||
"other_budgets": "Budget a periodi personalizzati",
|
||||
"journal_links": "Collegamenti della transazione",
|
||||
"go_to_withdrawals": "Vai ai tuoi prelievi",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Quarterly budgets",
|
||||
"half_year_budgets": "Half-yearly budgets",
|
||||
"yearly_budgets": "Yearly budgets",
|
||||
"split_transaction_title": "Description of the split transaction",
|
||||
"errors_submission": "There was something wrong with your submission. Please check out the errors.",
|
||||
"flash_error": "Feil!",
|
||||
"other_budgets": "Custom timed budgets",
|
||||
"journal_links": "Transaksjonskoblinger",
|
||||
"go_to_withdrawals": "Go to your withdrawals",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Driemaandelijkse budgetten",
|
||||
"half_year_budgets": "Halfjaarlijkse budgetten",
|
||||
"yearly_budgets": "Jaarlijkse budgetten",
|
||||
"split_transaction_title": "Beschrijving van de gesplitste transactie",
|
||||
"errors_submission": "Er ging iets mis. Check de errors.",
|
||||
"flash_error": "Fout!",
|
||||
"other_budgets": "Aangepaste budgetten",
|
||||
"journal_links": "Transactiekoppelingen",
|
||||
"go_to_withdrawals": "Ga naar je uitgaven",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Bud\u017cety kwartalne",
|
||||
"half_year_budgets": "Bud\u017cety p\u00f3\u0142roczne",
|
||||
"yearly_budgets": "Bud\u017cety roczne",
|
||||
"split_transaction_title": "Opis podzielonej transakcji",
|
||||
"errors_submission": "Co\u015b posz\u0142o nie tak w czasie zapisu. Prosz\u0119 sprawd\u017a b\u0142\u0119dy.",
|
||||
"flash_error": "B\u0142\u0105d!",
|
||||
"other_budgets": "Bud\u017cety niestandardowe",
|
||||
"journal_links": "Powi\u0105zane transakcje",
|
||||
"go_to_withdrawals": "Przejd\u017a do swoich wydatk\u00f3w",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Or\u00e7amentos trimestrais",
|
||||
"half_year_budgets": "Or\u00e7amentos semestrais",
|
||||
"yearly_budgets": "Or\u00e7amentos anuais",
|
||||
"split_transaction_title": "Descri\u00e7\u00e3o da transa\u00e7\u00e3o dividida",
|
||||
"errors_submission": "H\u00e1 algo de errado com o seu envio. Por favor, verifique os erros abaixo.",
|
||||
"flash_error": "Erro!",
|
||||
"other_budgets": "Custom timed budgets",
|
||||
"journal_links": "Transa\u00e7\u00f5es ligadas",
|
||||
"go_to_withdrawals": "V\u00e1 para seus saques",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Quarterly budgets",
|
||||
"half_year_budgets": "Half-yearly budgets",
|
||||
"yearly_budgets": "Yearly budgets",
|
||||
"split_transaction_title": "Descrierea tranzac\u021biei divizate",
|
||||
"errors_submission": "There was something wrong with your submission. Please check out the errors.",
|
||||
"flash_error": "Eroare!",
|
||||
"other_budgets": "Custom timed budgets",
|
||||
"journal_links": "Link-uri de tranzac\u021bii",
|
||||
"go_to_withdrawals": "Go to your withdrawals",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "\u0411\u044e\u0434\u0436\u0435\u0442\u044b \u043d\u0430 \u043a\u0432\u0430\u0440\u0442\u0430\u043b",
|
||||
"half_year_budgets": "\u0411\u044e\u0434\u0436\u0435\u0442\u044b \u043d\u0430 \u043f\u043e\u043b\u0433\u043e\u0434\u0430",
|
||||
"yearly_budgets": "\u0413\u043e\u0434\u043e\u0432\u044b\u0435 \u0431\u044e\u0434\u0436\u0435\u0442\u044b",
|
||||
"split_transaction_title": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438",
|
||||
"errors_submission": "There was something wrong with your submission. Please check out the errors.",
|
||||
"flash_error": "\u041e\u0448\u0438\u0431\u043a\u0430!",
|
||||
"other_budgets": "\u0411\u044e\u0434\u0436\u0435\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0440\u0435\u0437\u043e\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0438",
|
||||
"journal_links": "\u0421\u0432\u044f\u0437\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438",
|
||||
"go_to_withdrawals": "\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0432\u0430\u0448\u0438\u043c \u0440\u0430\u0441\u0445\u043e\u0434\u0430\u043c",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "\u0160tvr\u0165ro\u010dn\u00e9 rozpo\u010dty",
|
||||
"half_year_budgets": "Polro\u010dn\u00e9 rozpo\u010dty",
|
||||
"yearly_budgets": "Ro\u010dn\u00e9 rozpo\u010dty",
|
||||
"split_transaction_title": "Popis roz\u00fa\u010dtovania",
|
||||
"errors_submission": "Pri odosielan\u00ed sa nie\u010do nepodarilo. Skontrolujte pros\u00edm chyby.",
|
||||
"flash_error": "Chyba!",
|
||||
"other_budgets": "\u0160pecifick\u00e9 \u010dasovan\u00e9 rozpo\u010dty",
|
||||
"journal_links": "Prepojenia transakcie",
|
||||
"go_to_withdrawals": "Zobrazi\u0165 v\u00fdbery",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Kvartalsbudgetar",
|
||||
"half_year_budgets": "Halv\u00e5rsbudgetar",
|
||||
"yearly_budgets": "\u00c5rliga budgetar",
|
||||
"split_transaction_title": "Beskrivning av delad transaktion",
|
||||
"errors_submission": "N\u00e5got fel uppstod med inskickningen. V\u00e4nligen kontrollera felen nedan.",
|
||||
"flash_error": "Fel!",
|
||||
"other_budgets": "Anpassade tidsinst\u00e4llda budgetar",
|
||||
"journal_links": "Transaktionsl\u00e4nkar",
|
||||
"go_to_withdrawals": "G\u00e5 till dina uttag",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Quarterly budgets",
|
||||
"half_year_budgets": "Half-yearly budgets",
|
||||
"yearly_budgets": "Yearly budgets",
|
||||
"split_transaction_title": "M\u00f4 t\u1ea3 giao d\u1ecbch t\u00e1ch",
|
||||
"errors_submission": "There was something wrong with your submission. Please check out the errors.",
|
||||
"flash_error": "L\u1ed7i!",
|
||||
"other_budgets": "Custom timed budgets",
|
||||
"journal_links": "Li\u00ean k\u1ebft giao d\u1ecbch",
|
||||
"go_to_withdrawals": "Go to your withdrawals",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Quarterly budgets",
|
||||
"half_year_budgets": "Half-yearly budgets",
|
||||
"yearly_budgets": "Yearly budgets",
|
||||
"split_transaction_title": "\u62c6\u5206\u4ea4\u6613\u7684\u63cf\u8ff0",
|
||||
"errors_submission": "There was something wrong with your submission. Please check out the errors.",
|
||||
"flash_error": "\u9519\u8bef\uff01",
|
||||
"other_budgets": "Custom timed budgets",
|
||||
"journal_links": "\u4ea4\u6613\u8fde\u7ed3",
|
||||
"go_to_withdrawals": "Go to your withdrawals",
|
||||
|
@ -64,6 +64,9 @@
|
||||
"quarterly_budgets": "Quarterly budgets",
|
||||
"half_year_budgets": "Half-yearly budgets",
|
||||
"yearly_budgets": "Yearly budgets",
|
||||
"split_transaction_title": "\u62c6\u5206\u4ea4\u6613\u7684\u63cf\u8ff0",
|
||||
"errors_submission": "There was something wrong with your submission. Please check out the errors.",
|
||||
"flash_error": "\u932f\u8aa4\uff01",
|
||||
"other_budgets": "Custom timed budgets",
|
||||
"journal_links": "\u4ea4\u6613\u9023\u7d50",
|
||||
"go_to_withdrawals": "Go to your withdrawals",
|
||||
|
@ -2385,9 +2385,9 @@ d@1, d@^1.0.1:
|
||||
type "^1.0.1"
|
||||
|
||||
date-fns-tz@^1.0.12:
|
||||
version "1.0.12"
|
||||
resolved "https://registry.yarnpkg.com/date-fns-tz/-/date-fns-tz-1.0.12.tgz#2d680e1099767775cff7a30eac34362d52639fed"
|
||||
integrity sha512-Ca+9pjGkU90XDHnclfSjz9o7g/ZqyYyYI0aCYmbf65P75oy8gktuaRslO3UPXl3ADgAnF9/KCykQkpU3/xvtWQ==
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/date-fns-tz/-/date-fns-tz-1.1.1.tgz#2e0dfcc62cc5b7b5fa7ea620f11a5e7f63a7ed75"
|
||||
integrity sha512-5PR604TlyvpiNXtvn+PZCcCazsI8fI1am3/aimNFN8CMqHQ0KRl+6hB46y4mDbB7bk3+caEx3qHhS7Ewac/FIg==
|
||||
|
||||
date-fns@^2.8.1:
|
||||
version "2.16.1"
|
||||
@ -2636,9 +2636,9 @@ ejs@^2.6.1:
|
||||
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
|
||||
|
||||
electron-to-chromium@^1.3.634:
|
||||
version "1.3.648"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.648.tgz#b05926eca1843c04b283e682a1fc6c10af7e9dda"
|
||||
integrity sha512-4POzwyQ80tkDiBwkxn7IpfzioimrjRSFX1sCQ3pLZsYJ5ERYmwzdq0hZZ3nFP7Z6GtmnSn3xwWDm8FPlMeOoEQ==
|
||||
version "1.3.649"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.649.tgz#3aa8be052d4d268ede45d8e98d0cd60ffefad607"
|
||||
integrity sha512-ojGDupQ3UMkvPWcTICe4JYe17+o9OLiFMPoduoR72Zp2ILt1mRVeqnxBEd6s/ptekrnsFU+0A4lStfBe/wyG/A==
|
||||
|
||||
elliptic@^6.5.3:
|
||||
version "6.5.3"
|
||||
@ -5778,9 +5778,9 @@ regjsgen@^0.5.1:
|
||||
integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
|
||||
|
||||
regjsparser@^0.6.4:
|
||||
version "0.6.6"
|
||||
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.6.tgz#6d8c939d1a654f78859b08ddcc4aa777f3fa800a"
|
||||
integrity sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ==
|
||||
version "0.6.7"
|
||||
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.7.tgz#c00164e1e6713c2e3ee641f1701c4b7aa0a7f86c"
|
||||
integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==
|
||||
dependencies:
|
||||
jsesc "~0.5.0"
|
||||
|
||||
|
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
@ -1,2 +1,2 @@
|
||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{292:function(t,s,a){t.exports=a(410)},410:function(t,s,a){"use strict";a.r(s);var e={name:"Index",props:{accountTypes:String},data:function(){return{accounts:[]}},created:function(){var t=this;axios.get("./api/v1/accounts?type="+this.$props.accountTypes).then((function(s){t.loadAccounts(s.data.data)}))},methods:{loadAccounts:function(t){for(var s in t)if(t.hasOwnProperty(s)&&/^0$|^[1-9]\d*$/.test(s)&&s<=4294967294){var a=t[s];"asset"===a.attributes.type&&null!==a.attributes.account_role&&(a.attributes.account_role=this.$t("firefly.account_role_"+a.attributes.account_role)),"asset"===a.attributes.type&&null===a.attributes.account_role&&(a.attributes.account_role=this.$t("firefly.Default asset account")),null===a.attributes.iban&&(a.attributes.iban=a.attributes.account_number),this.accounts.push(a)}}}},c=a(1),n=Object(c.a)(e,(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"row"},[a("div",{staticClass:"col-lg-12 col-md-12 col-sm-12 col-xs-12"},[a("div",{staticClass:"card"},[t._m(0),t._v(" "),a("div",{staticClass:"card-body p-0"},[a("table",{staticClass:"table table-sm table-striped"},[a("caption",{staticStyle:{display:"none"}},[t._v(t._s(t.$t("list.name")))]),t._v(" "),a("thead",[a("tr",[a("th",{attrs:{scope:"col"}},[t._v(" ")]),t._v(" "),a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.name")))]),t._v(" "),"asset"===t.$props.accountTypes?a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.role")))]):t._e(),t._v(" "),a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.iban")))]),t._v(" "),a("th",{staticStyle:{"text-align":"right"},attrs:{scope:"col"}},[t._v(t._s(t.$t("list.currentBalance")))]),t._v(" "),a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.balanceDiff")))])])]),t._v(" "),a("tbody",t._l(t.accounts,(function(s){return a("tr",[a("td",[a("div",{staticClass:"btn-group btn-group-xs"},[a("a",{staticClass:"btn btn-xs btn-default",attrs:{href:"./accounts/edit/"+s.id}},[a("i",{staticClass:"fa fas fa-pencil-alt"})]),t._v(" "),a("a",{staticClass:"btn btn-xs btn-danger",attrs:{href:"./accounts/delete/"+s.id}},[a("i",{staticClass:"fa far fa-trash"})])])]),t._v(" "),a("td",[t._v(t._s(s.attributes.name)+"\n ")]),t._v(" "),"asset"===t.$props.accountTypes?a("td",[t._v("\n "+t._s(s.attributes.account_role)+"\n ")]):t._e(),t._v(" "),a("td",[t._v("\n "+t._s(s.attributes.iban)+"\n ")]),t._v(" "),a("td",{staticStyle:{"text-align":"right"}},[t._v("\n "+t._s(Intl.NumberFormat("en-US",{style:"currency",currency:s.attributes.currency_code}).format(s.attributes.current_balance))+"\n ")]),t._v(" "),a("td",[t._v("diff")])])})),0)])]),t._v(" "),a("div",{staticClass:"card-footer"},[t._v("\n Footer stuff.\n ")])])])])}),[function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"card-header"},[s("h3",{staticClass:"card-title"},[this._v("Title thing")]),this._v(" "),s("div",{staticClass:"card-tools"},[s("div",{staticClass:"input-group input-group-sm",staticStyle:{width:"150px"}},[s("input",{staticClass:"form-control float-right",attrs:{type:"text",name:"table_search",placeholder:"Search"}}),this._v(" "),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"btn btn-default",attrs:{type:"submit"}},[s("i",{staticClass:"fas fa-search"})])])])])])}],!1,null,"d668ce46",null).exports;a(15);var i=a(19),r={};new Vue({i18n:i,render:function(t){return t(n,{props:r})}}).$mount("#accounts")}},[[292,0,1]]]);
|
||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{292:function(t,s,a){t.exports=a(410)},410:function(t,s,a){"use strict";a.r(s);var e={name:"Index",props:{accountTypes:String},data:function(){return{accounts:[]}},created:function(){var t=this;axios.get("./api/v1/accounts?type="+this.$props.accountTypes).then((function(s){t.loadAccounts(s.data.data)}))},methods:{loadAccounts:function(t){for(var s in t)if(t.hasOwnProperty(s)&&/^0$|^[1-9]\d*$/.test(s)&&s<=4294967294){var a=t[s];"asset"===a.attributes.type&&null!==a.attributes.account_role&&(a.attributes.account_role=this.$t("firefly.account_role_"+a.attributes.account_role)),"asset"===a.attributes.type&&null===a.attributes.account_role&&(a.attributes.account_role=this.$t("firefly.Default asset account")),null===a.attributes.iban&&(a.attributes.iban=a.attributes.account_number),this.accounts.push(a)}}}},c=a(1),n=Object(c.a)(e,(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"row"},[a("div",{staticClass:"col-lg-12 col-md-12 col-sm-12 col-xs-12"},[a("div",{staticClass:"card"},[t._m(0),t._v(" "),a("div",{staticClass:"card-body p-0"},[a("table",{staticClass:"table table-sm table-striped"},[a("caption",{staticStyle:{display:"none"}},[t._v(t._s(t.$t("list.name")))]),t._v(" "),a("thead",[a("tr",[a("th",{attrs:{scope:"col"}},[t._v(" ")]),t._v(" "),a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.name")))]),t._v(" "),"asset"===t.$props.accountTypes?a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.role")))]):t._e(),t._v(" "),a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.iban")))]),t._v(" "),a("th",{staticStyle:{"text-align":"right"},attrs:{scope:"col"}},[t._v(t._s(t.$t("list.currentBalance")))]),t._v(" "),a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.balanceDiff")))])])]),t._v(" "),a("tbody",t._l(t.accounts,(function(s){return a("tr",[a("td",[a("div",{staticClass:"btn-group btn-group-xs"},[a("a",{staticClass:"btn btn-xs btn-default",attrs:{href:"./accounts/edit/"+s.id}},[a("i",{staticClass:"fa fas fa-pencil-alt"})]),t._v(" "),a("a",{staticClass:"btn btn-xs btn-danger",attrs:{href:"./accounts/delete/"+s.id}},[a("i",{staticClass:"fa far fa-trash"})])])]),t._v(" "),a("td",[t._v(t._s(s.attributes.name)+"\n ")]),t._v(" "),"asset"===t.$props.accountTypes?a("td",[t._v("\n "+t._s(s.attributes.account_role)+"\n ")]):t._e(),t._v(" "),a("td",[t._v("\n "+t._s(s.attributes.iban)+"\n ")]),t._v(" "),a("td",{staticStyle:{"text-align":"right"}},[t._v("\n "+t._s(Intl.NumberFormat("en-US",{style:"currency",currency:s.attributes.currency_code}).format(s.attributes.current_balance))+"\n ")]),t._v(" "),a("td",[t._v("diff")])])})),0)])]),t._v(" "),a("div",{staticClass:"card-footer"},[t._v("\n Footer stuff.\n ")])])])])}),[function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"card-header"},[s("h3",{staticClass:"card-title"},[this._v("Title thing")]),this._v(" "),s("div",{staticClass:"card-tools"},[s("div",{staticClass:"input-group input-group-sm",staticStyle:{width:"150px"}},[s("input",{staticClass:"form-control float-right",attrs:{type:"text",name:"table_search",placeholder:"Search"}}),this._v(" "),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"btn btn-default",attrs:{type:"submit"}},[s("i",{staticClass:"fas fa-search"})])])])])])}],!1,null,"d668ce46",null).exports;a(17);var i=a(19),r={};new Vue({i18n:i,render:function(t){return t(n,{props:r})}}).$mount("#accounts")}},[[292,0,1]]]);
|
||||
//# sourceMappingURL=index.js.map
|
2
public/v2/js/accounts/show.js
vendored
2
public/v2/js/accounts/show.js
vendored
@ -1,2 +1,2 @@
|
||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{293:function(n,e,t){n.exports=t(411)},411:function(n,e,t){"use strict";t.r(e);var o={name:"Show"},r=t(1),s=Object(r.a)(o,(function(){var n=this.$createElement;return(this._self._c||n)("div",[this._v("\n I am a show\n")])}),[],!1,null,"dcd61a50",null).exports;t(15);var c=t(19),u={};new Vue({i18n:c,render:function(n){return n(s,{props:u})}}).$mount("#accounts_show")}},[[293,0,1]]]);
|
||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{293:function(n,e,t){n.exports=t(411)},411:function(n,e,t){"use strict";t.r(e);var o={name:"Show"},r=t(1),s=Object(r.a)(o,(function(){var n=this.$createElement;return(this._self._c||n)("div",[this._v("\n I am a show\n")])}),[],!1,null,"dcd61a50",null).exports;t(17);var c=t(19),u={};new Vue({i18n:c,render:function(n){return n(s,{props:u})}}).$mount("#accounts_show")}},[[293,0,1]]]);
|
||||
//# sourceMappingURL=show.js.map
|
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
2
public/v2/js/empty.js
vendored
2
public/v2/js/empty.js
vendored
@ -1,2 +1,2 @@
|
||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{289:function(n,o,p){n.exports=p(290)},290:function(n,o,p){p(15)}},[[289,0,1]]]);
|
||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{289:function(n,o,p){n.exports=p(290)},290:function(n,o,p){p(17)}},[[289,0,1]]]);
|
||||
//# sourceMappingURL=empty.js.map
|
2
public/v2/js/new-user/index.js
vendored
2
public/v2/js/new-user/index.js
vendored
@ -1,2 +1,2 @@
|
||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{291:function(a,e,t){a.exports=t(409)},409:function(a,e,t){"use strict";t.r(e);var s={name:"Index"},n=t(1),i=Object(n.a)(s,(function(){var a=this.$createElement;this._self._c;return this._m(0)}),[function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("div",{staticClass:"row"},[t("div",{staticClass:"col"},[t("div",{attrs:{id:"accordion"}},[t("div",{staticClass:"card card-primary"},[t("div",{staticClass:"card-header"},[t("h4",{staticClass:"card-title"},[t("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseOne"}},[a._v("\n Create new accounts\n ")])])]),a._v(" "),t("div",{staticClass:"panel-collapse collapse show",attrs:{id:"collapseOne"}},[t("div",{staticClass:"card-body"},[t("div",{staticClass:"row"},[t("div",{staticClass:"col"},[t("p",[a._v("Explain")])])]),a._v(" "),t("div",{staticClass:"row"},[t("div",{staticClass:"col-lg-4"},[a._v("\n A\n ")]),a._v(" "),t("div",{staticClass:"col-lg-8"},[a._v("\n B\n ")])])])])]),a._v(" "),t("div",{staticClass:"card card-secondary"},[t("div",{staticClass:"card-header"},[t("h4",{staticClass:"card-title"},[t("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseTwo"}},[a._v("\n Collapsible Group Danger\n ")])])]),a._v(" "),t("div",{staticClass:"panel-collapse collapse",attrs:{id:"collapseTwo"}},[t("div",{staticClass:"card-body"},[a._v("\n Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid.\n 3\n wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt\n laborum\n eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee\n nulla\n assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred\n nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft\n beer\n farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus\n labore sustainable VHS.\n ")])])]),a._v(" "),t("div",{staticClass:"card card-secondary"},[t("div",{staticClass:"card-header"},[t("h4",{staticClass:"card-title"},[t("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseThree"}},[a._v("\n Collapsible Group Success\n ")])])]),a._v(" "),t("div",{staticClass:"panel-collapse collapse",attrs:{id:"collapseThree"}},[t("div",{staticClass:"card-body"},[a._v("\n Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid.\n 3\n wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt\n laborum\n eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee\n nulla\n assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred\n nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft\n beer\n farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus\n labore sustainable VHS.\n ")])])])])])])}],!1,null,"5c520d02",null).exports;t(15);var c=t(19),r={};new Vue({i18n:c,render:function(a){return a(i,{props:r})}}).$mount("#newuser")}},[[291,0,1]]]);
|
||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{291:function(a,e,t){a.exports=t(409)},409:function(a,e,t){"use strict";t.r(e);var s={name:"Index"},n=t(1),i=Object(n.a)(s,(function(){var a=this.$createElement;this._self._c;return this._m(0)}),[function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("div",{staticClass:"row"},[t("div",{staticClass:"col"},[t("div",{attrs:{id:"accordion"}},[t("div",{staticClass:"card card-primary"},[t("div",{staticClass:"card-header"},[t("h4",{staticClass:"card-title"},[t("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseOne"}},[a._v("\n Create new accounts\n ")])])]),a._v(" "),t("div",{staticClass:"panel-collapse collapse show",attrs:{id:"collapseOne"}},[t("div",{staticClass:"card-body"},[t("div",{staticClass:"row"},[t("div",{staticClass:"col"},[t("p",[a._v("Explain")])])]),a._v(" "),t("div",{staticClass:"row"},[t("div",{staticClass:"col-lg-4"},[a._v("\n A\n ")]),a._v(" "),t("div",{staticClass:"col-lg-8"},[a._v("\n B\n ")])])])])]),a._v(" "),t("div",{staticClass:"card card-secondary"},[t("div",{staticClass:"card-header"},[t("h4",{staticClass:"card-title"},[t("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseTwo"}},[a._v("\n Collapsible Group Danger\n ")])])]),a._v(" "),t("div",{staticClass:"panel-collapse collapse",attrs:{id:"collapseTwo"}},[t("div",{staticClass:"card-body"},[a._v("\n Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid.\n 3\n wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt\n laborum\n eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee\n nulla\n assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred\n nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft\n beer\n farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus\n labore sustainable VHS.\n ")])])]),a._v(" "),t("div",{staticClass:"card card-secondary"},[t("div",{staticClass:"card-header"},[t("h4",{staticClass:"card-title"},[t("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseThree"}},[a._v("\n Collapsible Group Success\n ")])])]),a._v(" "),t("div",{staticClass:"panel-collapse collapse",attrs:{id:"collapseThree"}},[t("div",{staticClass:"card-body"},[a._v("\n Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid.\n 3\n wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt\n laborum\n eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee\n nulla\n assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred\n nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft\n beer\n farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus\n labore sustainable VHS.\n ")])])])])])])}],!1,null,"5c520d02",null).exports;t(17);var c=t(19),r={};new Vue({i18n:c,render:function(a){return a(i,{props:r})}}).$mount("#newuser")}},[[291,0,1]]]);
|
||||
//# sourceMappingURL=index.js.map
|
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/vendor.js
vendored
2
public/v2/js/vendor.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
20
public/v2/plugins/local-fonts/gf-source.css
vendored
20
public/v2/plugins/local-fonts/gf-source.css
vendored
@ -1,3 +1,23 @@
|
||||
/*
|
||||
* gf-source.css
|
||||
* Copyright (c) 2021 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* source-sans-pro-300 - greek_cyrillic-ext_vietnamese_greek-ext_latin-ext_cyrillic_latin */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
|
Loading…
Reference in New Issue
Block a user