Update frontend.

This commit is contained in:
James Cole 2021-02-15 20:32:29 +01:00
parent 0ac0dbc774
commit 5e7c57744c
No known key found for this signature in database
GPG Key ID: B5669F9493CDE38D
42 changed files with 275 additions and 99 deletions

View File

@ -49,7 +49,7 @@ class PreferencesController extends Controller
$this->middleware(
function ($request, $next) {
app('view')->share('title', (string) trans('firefly.preferences'));
app('view')->share('title', (string)trans('firefly.preferences'));
app('view')->share('mainTitleIcon', 'fa-gear');
return $next($request);
@ -111,7 +111,7 @@ class PreferencesController extends Controller
Log::error($e->getMessage());
$locales = [];
}
$locales = ['equal' => (string) trans('firefly.equal_to_language')] + $locales;
$locales = ['equal' => (string)trans('firefly.equal_to_language')] + $locales;
// an important fallback is that the frontPageAccount array gets refilled automatically
// when it turns up empty.
if (0 === count($frontPageAccounts->data)) {
@ -151,7 +151,7 @@ class PreferencesController extends Controller
$frontPageAccounts = [];
if (is_array($request->get('frontPageAccounts')) && count($request->get('frontPageAccounts')) > 0) {
foreach ($request->get('frontPageAccounts') as $id) {
$frontPageAccounts[] = (int) $id;
$frontPageAccounts[] = (int)$id;
}
app('preferences')->set('frontPageAccounts', $frontPageAccounts);
}
@ -164,14 +164,14 @@ class PreferencesController extends Controller
session()->forget('range');
// custom fiscal year
$customFiscalYear = 1 === (int) $request->get('customFiscalYear');
$fiscalYearStart = date('m-d', strtotime((string) $request->get('fiscalYearStart')));
$customFiscalYear = 1 === (int)$request->get('customFiscalYear');
$fiscalYearStart = date('m-d', strtotime((string)$request->get('fiscalYearStart')));
app('preferences')->set('customFiscalYear', $customFiscalYear);
app('preferences')->set('fiscalYearStart', $fiscalYearStart);
// save page size:
app('preferences')->set('listPageSize', 50);
$listPageSize = (int) $request->get('listPageSize');
$listPageSize = (int)$request->get('listPageSize');
if ($listPageSize > 0 && $listPageSize < 1337) {
app('preferences')->set('listPageSize', $listPageSize);
}
@ -207,10 +207,12 @@ class PreferencesController extends Controller
'notes' => isset($setOptions['notes']),
'attachments' => isset($setOptions['attachments']),
'external_uri' => isset($setOptions['external_uri']),
'location' => isset($setOptions['location']),
'links' => isset($setOptions['links']),
];
app('preferences')->set('transaction_journal_optional_fields', $optionalTj);
session()->flash('success', (string) trans('firefly.saved_preferences'));
session()->flash('success', (string)trans('firefly.saved_preferences'));
app('preferences')->mark();
// telemetry: user language preference + default language.

View File

@ -19,7 +19,7 @@
"node-forge": ">=0.10.0",
"resolve-url-loader": "^3.1.2",
"sass": "^1.32.2",
"sass-loader": "^11.0.1",
"sass-loader": "^10.1.1",
"vue": "^2.6.12",
"vue-i18n": "^8.22.2",
"vue-template-compiler": "^2.6.12"

View File

@ -55,7 +55,8 @@ const state = () => ({
piggy_bank: [],
internal_reference: [],
external_url: [],
notes: []
notes: [],
location: []
},
defaultTransaction: {
// basic

View File

@ -22,7 +22,7 @@
<div>
<alert :message="errorMessage" type="danger"/>
<alert :message="successMessage" type="success"/>
<SplitPills :transactions="transactions" />
<SplitPills :transactions="transactions"/>
<div class="tab-content">
<SplitForm
v-for="(transaction, index) in this.transactions"
@ -30,6 +30,7 @@
:transaction="transaction"
:index="index"
:count="transactions.length"
:custom-fields="customFields"
:submitted-transaction="submittedTransaction"
v-on:uploaded-attachments="uploadedAttachment($event)"
/>
@ -116,7 +117,7 @@ export default {
created() {
this.storeAllowedOpposingTypes();
this.storeAccountToTransaction();
this.storeCustomDateFields();
this.storeCustomFields();
this.addTransaction();
},
data() {
@ -125,6 +126,9 @@ export default {
errorMessage: '',
successMessage: '',
// custom fields, useful for components:
customFields: [],
// states for the form (makes sense right)
enableSubmit: true,
createAnother: false,
@ -155,7 +159,6 @@ export default {
...mapGetters([
'transactionType',
'transactions',
'customDateFields',
'date',
'groupTitle'
])
@ -203,27 +206,9 @@ export default {
* it should be done via the create.js Vue store because multiple components are interested in the
* user's custom transaction fields.
*/
storeCustomDateFields: function () {
storeCustomFields: function () {
axios.get('./api/v1/preferences/transaction_journal_optional_fields').then(response => {
let fields = response.data.data.attributes.data;
let allDateFields = ['interest_date', 'book_date', 'process_date', 'due_date', 'payment_date', 'invoice_date'];
let selectedDateFields = {
interest_date: false,
book_date: false,
process_date: false,
due_date: false,
payment_date: false,
invoice_date: false,
};
for (let key in fields) {
if (fields.hasOwnProperty(key)) {
if (-1 !== allDateFields.indexOf(key)) {
selectedDateFields[key] = fields[key];
}
}
}
// see we already store it in the store, so this would be an easy change.
this.$store.commit('transactions/create/setCustomDateFields', selectedDateFields);
this.customFields = response.data.data.attributes.data;
});
},
/**

View File

@ -100,6 +100,7 @@
<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"
:custom-fields.sync="customFields"
:errors="transaction.errors.custom_dates"
/>
</div>
@ -164,12 +165,12 @@
</div>
<!-- end card for meta -->
<!-- card for extra -->
<div class="row">
<div class="row" v-if="hasMetaFields">
<div class="col">
<div class="card">
<div class="card-header">
<h3 class="card-title">
{{ $t('firefly.transaction_journal_meta') }}
{{ $t('firefly.transaction_journal_extra') }}
<span v-if="count > 1">({{ index + 1 }} / {{ count }}) </span>
</h3>
</div>
@ -182,17 +183,20 @@
:index="index"
v-model="transaction.internal_reference"
:errors="transaction.errors.internal_reference"
:custom-fields.sync="customFields"
/>
<TransactionExternalUrl
:index="index"
v-model="transaction.external_url"
:errors="transaction.errors.external_url"
:custom-fields.sync="customFields"
/>
<TransactionNotes
:index="index"
v-model="transaction.notes"
:errors="transaction.errors.notes"
:custom-fields.sync="customFields"
/>
</div>
<div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
@ -204,9 +208,20 @@
:transaction_journal_id="transaction.transaction_journal_id"
:submitted_transaction="submittedTransaction"
v-model="transaction.attachments"
:custom-fields.sync="customFields"
/>
<TransactionLocation
:index="index"
v-model="transaction.notes"
:errors="transaction.errors.location"
:custom-fields.sync="customFields"
/>
<TransactionLinks :index="index" v-model="transaction.links" />
<TransactionLinks
:index="index"
v-model="transaction.links"
:custom-fields.sync="customFields"
/>
</div>
</div>
@ -242,6 +257,7 @@ import TransactionLinks from "./TransactionLinks";
import TransactionAttachments from "./TransactionAttachments";
import SplitPills from "./SplitPills";
import {createNamespacedHelpers} from "vuex";
import TransactionLocation from "./TransactionLocation";
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
@ -251,13 +267,35 @@ export default {
'transaction',
'split',
'count',
'customFields', // for custom transaction form fields.
'index',
'submittedTransaction' // need to know if transaction is submitted.
],
computed: {
...mapGetters(['transactionType',])
...mapGetters(['transactionType',]),
hasMetaFields: function () {
let requiredFields = [
'internal_reference',
'notes',
'attachments',
'external_uri',
'location',
'links',
];
for (let field in this.customFields) {
if (this.customFields.hasOwnProperty(field)) {
if (requiredFields.includes(field)) {
if (true === this.customFields[field]) {
return true;
}
}
}
}
return false;
}
},
components: {
TransactionLocation,
SplitPills,
TransactionAttachments,
TransactionNotes,

View File

@ -19,7 +19,7 @@
-->
<template>
<div class="form-group">
<div class="form-group" v-if="showField">
<div class="text-xs d-none d-lg-block d-xl-block">
{{ $t('firefly.attachments') }}
</div>
@ -38,16 +38,35 @@
<script>
export default {
name: "TransactionAttachments",
props: ['transaction_journal_id'],
props: ['transaction_journal_id', 'customFields'],
data() {
return {
availableFields: this.customFields
}
},
watch: {
customFields: function (value) {
this.availableFields = value;
},
transaction_journal_id: function (value) {
console.log('transaction_journal_id changed to ' + value);
if (!this.showField) {
return;
}
// console.log('transaction_journal_id changed to ' + value);
// do upload!
if (0 !== value) {
this.doUpload();
}
}
},
computed: {
showField: function () {
if ('attachments' in this.availableFields) {
return this.availableFields.attachments;
}
return false;
}
},
methods: {
doUpload: function () {
console.log('Now in doUpload() for ' + this.$refs.att.files.length + ' files.');

View File

@ -20,11 +20,11 @@
<template>
<div>
<div class="form-group" v-for="(enabled, name) in enabledDates">
<div class="text-xs d-none d-lg-block d-xl-block" v-if="enabled">
<div class="form-group" v-for="(enabled, name) in availableFields">
<div class="text-xs d-none d-lg-block d-xl-block" v-if="enabled && isDateField(name)">
{{ $t('form.' + name) }}
</div>
<div class="input-group" v-if="enabled">
<div class="input-group" v-if="enabled && isDateField(name)">
<input
class="form-control"
type="date"
@ -44,52 +44,37 @@
<script>
// TODO: error handling
// TODO dont use store?
import {createNamespacedHelpers} from "vuex";
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
export default {
name: "TransactionCustomDates",
props: ['index', 'errors'],
props: ['index', 'errors', 'customFields'],
data() {
return {
enabledDates: {},
dateFields: ['interest_date', 'book_date', 'process_date', 'due_date', 'payment_date', 'invoice_date'],
availableFields: this.customFields
}
},
created() {
this.getCustomDates();
watch: {
customFields: function(value) {
this.availableFields = value;
}
},
methods: {
...mapGetters(['transactions']),
...mapMutations(['updateField',],
),
isDateField: function (name) {
return this.dateFields.includes(name)
},
getFieldValue(field) {
return this.transactions()[parseInt(this.index)][field] ?? '';
},
setFieldValue(event, field) {
this.updateField({index: this.index, field: field, value: event.target.value});
},
getCustomDates: function () {
axios.get('./api/v1/preferences/transaction_journal_optional_fields').then(response => {
let fields = response.data.data.attributes.data;
let allDateFields = ['interest_date', 'book_date', 'process_date', 'due_date', 'payment_date', 'invoice_date'];
let selectedDateFields = {
interest_date: false,
book_date: false,
process_date: false,
due_date: false,
payment_date: false,
invoice_date: false,
};
for (let key in fields) {
if (fields.hasOwnProperty(key)) {
if (-1 !== allDateFields.indexOf(key)) {
selectedDateFields[key] = fields[key];
}
}
}
this.enabledDates = selectedDateFields;
});
},
}
}
</script>

View File

@ -19,7 +19,7 @@
-->
<template>
<div class="form-group">
<div class="form-group" v-if="showField">
<div class="text-xs d-none d-lg-block d-xl-block">
{{ $t('firefly.external_url') }}
</div>
@ -44,11 +44,20 @@ import {createNamespacedHelpers} from "vuex";
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
export default {
props: ['index', 'value', 'errors'],
props: ['index', 'value', 'errors', 'customFields'],
name: "TransactionExternalUrl",
data() {
return {
url: this.value
url: this.value,
availableFields: this.customFields
}
},
computed: {
showField: function () {
if ('external_uri' in this.availableFields) {
return this.availableFields.external_uri;
}
return false;
}
},
methods: {
@ -59,6 +68,9 @@ export default {
),
},
watch: {
customFields: function (value) {
this.availableFields = value;
},
url: function (value) {
this.updateField({field: 'external_url', index: this.index, value: value});
}

View File

@ -19,7 +19,7 @@
-->
<template>
<div class="form-group">
<div class="form-group" v-if="showField">
<div class="text-xs d-none d-lg-block d-xl-block">
{{ $t('firefly.internal_reference') }}
</div>
@ -44,11 +44,20 @@ import {createNamespacedHelpers} from "vuex";
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
export default {
props: ['index', 'value', 'errors'],
props: ['index', 'value', 'errors', 'customFields'],
name: "TransactionInternalReference",
data() {
return {
reference: this.value
reference: this.value,
availableFields: this.customFields
}
},
computed: {
showField: function () {
if ('internal_reference' in this.availableFields) {
return this.availableFields.internal_reference;
}
return false;
}
},
methods: {
@ -59,6 +68,9 @@ export default {
),
},
watch: {
customFields: function (value) {
this.availableFields = value;
},
reference: function (value) {
this.updateField({field: 'internal_reference', index: this.index, value: value});
}

View File

@ -19,7 +19,7 @@
-->
<template>
<div>
<div v-if="showField">
<div class="form-group">
<div class="text-xs d-none d-lg-block d-xl-block">
{{ $t('firefly.journal_links') }}
@ -191,7 +191,7 @@ const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers
const lodashClonedeep = require('lodash.clonedeep');
// TODO error handling
export default {
props: ['index', 'value', 'errors'],
props: ['index', 'value', 'errors', 'customFields'],
name: "TransactionLinks",
data() {
return {
@ -202,6 +202,7 @@ export default {
query: '',
searching: false,
links: [],
availableFields: this.customFields
}
},
created() {
@ -209,9 +210,20 @@ export default {
this.links = lodashClonedeep(this.value);
this.getLinkTypes();
},
computed: {
showField: function () {
if ('links' in this.availableFields) {
return this.availableFields.links;
}
return false;
}
},
watch: {
links: function (value) {
this.updateField({index: this.index, field: 'links', value: lodashClonedeep(value)});
},
customFields: function (value) {
this.availableFields = value;
}
},
methods: {

View File

@ -0,0 +1,59 @@
<!--
- TransactionLocation.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" v-if="showField">
<div class="text-xs d-none d-lg-block d-xl-block">
{{ $t('firefly.location') }}
</div>
<div class="input-group">
(TODO)
</div>
</div>
</template>
<script>
export default {
name: "TransactionLocation",
props: ['index', 'value', 'errors', 'customFields'],
data() {
return {
availableFields: this.customFields
}
},
computed: {
showField: function () {
if ('location' in this.availableFields) {
return this.availableFields.location;
}
return false;
}
},
watch: {
customFields: function (value) {
this.availableFields = value;
},
}
}
</script>
<style scoped>
</style>

View File

@ -20,7 +20,7 @@
<template>
<div class="form-group">
<div class="form-group" v-if="showField">
<div class="text-xs d-none d-lg-block d-xl-block">
{{ $t('firefly.notes') }}
</div>
@ -41,11 +41,20 @@ import {createNamespacedHelpers} from "vuex";
const {mapState, mapGetters, mapActions, mapMutations} = createNamespacedHelpers('transactions/create')
export default {
props: ['index', 'value', 'errors'],
props: ['index', 'value', 'errors', 'customFields'],
name: "TransactionNotes",
data() {
return {
notes: this.value
notes: this.value,
availableFields: this.customFields
}
},
computed: {
showField: function () {
if ('notes' in this.availableFields) {
return this.availableFields.notes;
}
return false;
}
},
methods: {
@ -56,6 +65,9 @@ export default {
),
},
watch: {
customFields: function (value) {
this.availableFields = value;
},
notes: function (value) {
this.updateField({field: 'notes', index: this.index, value: value});
}

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435",
"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",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Um\u00edst\u011bn\u00ed",
"other_budgets": "Custom timed budgets",
"journal_links": "Transaction links",
"go_to_withdrawals": "Go to your withdrawals",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Standort",
"other_budgets": "Zeitlich befristete Budgets",
"journal_links": "Buchungsverkn\u00fcpfungen",
"go_to_withdrawals": "Ausgaben anzeigen",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "\u03a4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\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",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Location",
"other_budgets": "Custom timed budgets",
"journal_links": "Transaction links",
"go_to_withdrawals": "Go to your withdrawals",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Location",
"other_budgets": "Custom timed budgets",
"journal_links": "Transaction links",
"go_to_withdrawals": "Go to your withdrawals",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Ubicaci\u00f3n",
"other_budgets": "Presupuestos de tiempo personalizado",
"journal_links": "Enlaces de transacciones",
"go_to_withdrawals": "Ir a tus retiradas",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Sijainti",
"other_budgets": "Custom timed budgets",
"journal_links": "Tapahtuman linkit",
"go_to_withdrawals": "Go to your withdrawals",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Emplacement",
"other_budgets": "Budgets \u00e0 p\u00e9riode personnalis\u00e9e",
"journal_links": "Liens d'op\u00e9ration",
"go_to_withdrawals": "Acc\u00e9der \u00e0 vos retraits",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Hely",
"other_budgets": "Custom timed budgets",
"journal_links": "Tranzakci\u00f3 \u00f6sszekapcsol\u00e1sok",
"go_to_withdrawals": "Ugr\u00e1s a k\u00f6lts\u00e9gekhez",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Posizione",
"other_budgets": "Budget a periodi personalizzati",
"journal_links": "Collegamenti della transazione",
"go_to_withdrawals": "Vai ai tuoi prelievi",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Sted",
"other_budgets": "Custom timed budgets",
"journal_links": "Transaksjonskoblinger",
"go_to_withdrawals": "Go to your withdrawals",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Plaats",
"other_budgets": "Aangepaste budgetten",
"journal_links": "Transactiekoppelingen",
"go_to_withdrawals": "Ga naar je uitgaven",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Lokalizacja",
"other_budgets": "Bud\u017cety niestandardowe",
"journal_links": "Powi\u0105zane transakcje",
"go_to_withdrawals": "Przejd\u017a do swoich wydatk\u00f3w",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Localiza\u00e7\u00e3o",
"other_budgets": "Custom timed budgets",
"journal_links": "Transa\u00e7\u00f5es ligadas",
"go_to_withdrawals": "V\u00e1 para seus saques",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Localiza\u00e7\u00e3o",
"other_budgets": "Or\u00e7amentos de tempo personalizado",
"journal_links": "Liga\u00e7\u00f5es de transac\u00e7\u00e3o",
"go_to_withdrawals": "Ir para os seus levantamentos",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Loca\u021bie",
"other_budgets": "Custom timed budgets",
"journal_links": "Link-uri de tranzac\u021bii",
"go_to_withdrawals": "Go to your withdrawals",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435",
"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",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Poloha",
"other_budgets": "\u0160pecifick\u00e9 \u010dasovan\u00e9 rozpo\u010dty",
"journal_links": "Prepojenia transakcie",
"go_to_withdrawals": "Zobrazi\u0165 v\u00fdbery",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "Plats",
"other_budgets": "Anpassade tidsinst\u00e4llda budgetar",
"journal_links": "Transaktionsl\u00e4nkar",
"go_to_withdrawals": "G\u00e5 till dina uttag",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "V\u1ecb tr\u00ed",
"other_budgets": "Custom timed budgets",
"journal_links": "Li\u00ean k\u1ebft giao d\u1ecbch",
"go_to_withdrawals": "Go to your withdrawals",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "\u4f4d\u7f6e",
"other_budgets": "Custom timed budgets",
"journal_links": "\u4ea4\u6613\u8fde\u7ed3",
"go_to_withdrawals": "Go to your withdrawals",

View File

@ -79,6 +79,7 @@
"custom_period": "Custom period",
"reset_to_current": "Reset to current period",
"select_period": "Select a period",
"location": "\u4f4d\u7f6e",
"other_budgets": "Custom timed budgets",
"journal_links": "\u4ea4\u6613\u9023\u7d50",
"go_to_withdrawals": "Go to your withdrawals",

View File

@ -858,7 +858,7 @@
"@types/minimatch" "*"
"@types/node" "*"
"@types/json-schema@^7.0.5":
"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
version "7.0.7"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
@ -869,9 +869,9 @@
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/node@*":
version "14.14.27"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.27.tgz#c7127f8da0498993e13b1a42faf1303d3110d2f2"
integrity sha512-Ecfmo4YDQPwuqTCl1yBxLV5ihKfRlkBmzUEDcfIRvDxOTGQEeikr317Ln7Gcv0tjA8dVgKI3rniqW2G1OyKDng==
version "14.14.28"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.28.tgz#cade4b64f8438f588951a6b35843ce536853f25b"
integrity sha512-lg55ArB+ZiHHbBBttLpzD07akz0QPrZgUODNakeC09i62dnrywr9mFErHuaPlB6I7z+sEbK+IYmplahvplCj2g==
"@types/q@^1.5.1":
version "1.5.4"
@ -1098,7 +1098,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.4:
ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@ -2626,9 +2626,9 @@ ejs@^2.6.1:
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
electron-to-chromium@^1.3.649:
version "1.3.664"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.664.tgz#8fb039e2fa8ef3ab2568308464a28425d4f6e2a3"
integrity sha512-yb8LrTQXQnh9yhnaIHLk6CYugF/An50T20+X0h++hjjhVfgSp1DGoMSYycF8/aD5eiqS4QwaNhiduFvK8rifRg==
version "1.3.665"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.665.tgz#6d0937376f6a919c0f289202c4be77790a6175e5"
integrity sha512-LIjx1JheOz7LM8DMEQ2tPnbBzJ4nVG1MKutsbEMLnJfwfVdPIsyagqfLp56bOWhdBrYGXWHaTayYkllIU2TauA==
elliptic@^6.5.3:
version "6.5.4"
@ -5943,13 +5943,16 @@ safe-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sass-loader@^11.0.1:
version "11.0.1"
resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-11.0.1.tgz#8672f896593466573b904f47693e0695368e38c9"
integrity sha512-Vp1LcP4slTsTNLEiDkTcm8zGN/XYYrZz2BZybQbliWA8eXveqA/AxsEjllQTpJbg2MzCsx/qNO48sHdZtOaxTw==
sass-loader@^10.1.1:
version "10.1.1"
resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d"
integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==
dependencies:
klona "^2.0.4"
loader-utils "^2.0.0"
neo-async "^2.6.2"
schema-utils "^3.0.0"
semver "^7.3.2"
sass@^1.32.2:
version "1.32.7"
@ -5989,6 +5992,15 @@ schema-utils@^2.6.5, schema-utils@^2.6.6:
ajv "^6.12.4"
ajv-keywords "^3.5.2"
schema-utils@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef"
integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==
dependencies:
"@types/json-schema" "^7.0.6"
ajv "^6.12.5"
ajv-keywords "^3.5.2"
select-hose@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -678,7 +678,7 @@ return [
'pref_optional_fields_transaction' => 'Optional fields for transactions',
'pref_optional_fields_transaction_help' => 'By default not all fields are enabled when creating a new transaction (because of the clutter). Below, you can enable these fields if you think they could be useful for you. Of course, any field that is disabled, but already filled in, will be visible regardless of the setting.',
'optional_tj_date_fields' => 'Date fields',
'optional_tj_business_fields' => 'Business fields',
'optional_tj_other_fields' => 'Other fields',
'optional_tj_attachment_fields' => 'Attachment fields',
'pref_optional_tj_interest_date' => 'Interest date',
'pref_optional_tj_book_date' => 'Book date',
@ -689,12 +689,14 @@ return [
'pref_optional_tj_internal_reference' => 'Internal reference',
'pref_optional_tj_notes' => 'Notes',
'pref_optional_tj_attachments' => 'Attachments',
'pref_optional_tj_external_uri' => 'External URI',
'pref_optional_tj_external_uri' => 'External URL',
'pref_optional_tj_location' => 'Location',
'pref_optional_tj_links' => 'Transaction links',
'optional_field_meta_dates' => 'Dates',
'optional_field_meta_business' => 'Business',
'optional_field_attachments' => 'Attachments',
'optional_field_meta_data' => 'Optional meta data',
'external_uri' => 'External URI',
'external_uri' => 'External URL',
// profile:
'delete_stuff_header' => 'Delete data',

View File

@ -107,10 +107,12 @@
{{ ExpandedForm.checkbox('tj[payment_date]','1', tjOptionalFields.payment_date,{ 'label' : 'pref_optional_tj_payment_date'|_ }) }}
{{ ExpandedForm.checkbox('tj[invoice_date]','1', tjOptionalFields.invoice_date,{ 'label' : 'pref_optional_tj_invoice_date'|_ }) }}
<h4>{{ 'optional_tj_business_fields'|_ }}</h4>
<h4>{{ 'optional_tj_other_fields'|_ }}</h4>
{{ ExpandedForm.checkbox('tj[internal_reference]','1', tjOptionalFields.internal_reference,{ 'label' : 'pref_optional_tj_internal_reference'|_ }) }}
{{ ExpandedForm.checkbox('tj[external_uri]','1', tjOptionalFields.external_uri,{ 'label' : 'pref_optional_tj_external_uri'|_ }) }}
{{ ExpandedForm.checkbox('tj[notes]','1', tjOptionalFields.notes,{ 'label' : 'pref_optional_tj_notes'|_ }) }}
{{ ExpandedForm.checkbox('tj[location]','1', tjOptionalFields.location,{ 'label' : 'pref_optional_tj_location'|_ }) }}
{{ ExpandedForm.checkbox('tj[links]','1', tjOptionalFields.links,{ 'label' : 'pref_optional_tj_links'|_ }) }}
<h4>{{ 'optional_tj_attachment_fields'|_ }}</h4>
{{ ExpandedForm.checkbox('tj[attachments]','1', tjOptionalFields.attachments,{ 'label' : 'pref_optional_tj_attachments'|_ }) }}