Various PSR12 code cleanup

This commit is contained in:
James Cole 2022-12-29 19:43:43 +01:00
parent 56b9b66352
commit 5b8e01fbfb
No known key found for this signature in database
GPG Key ID: B49A324B7EAD6D80
240 changed files with 8059 additions and 7895 deletions

View File

@ -21,7 +21,6 @@
declare(strict_types=1);
use Illuminate\Contracts\View\Factory as ViewFactory;
/*
|--------------------------------------------------------------------------
| Create The Application
@ -67,7 +66,7 @@ if (!function_exists('str_is_equal')) {
}
$app = new Illuminate\Foundation\Application(
realpath(__DIR__ . '/../')
realpath(__DIR__.'/../')
);
/*

View File

@ -21,7 +21,7 @@
declare(strict_types=1);
if ('ldap' === strtolower((string) env('AUTHENTICATION_GUARD'))) {
if ('ldap' === strtolower((string)env('AUTHENTICATION_GUARD'))) {
die('LDAP is no longer supported by Firefly III v5.7+. Sorry about that. You will have to switch to "remote_user_guard", and use tools like Authelia or Keycloak to use LDAP together with Firefly III.');
}

View File

@ -83,7 +83,7 @@ return [
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => (int) env('MEMCACHED_PORT', 11211),
'port' => (int)env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],

View File

@ -142,7 +142,7 @@ return [
'client' => env('REDIS_CLIENT', 'predis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'predis'),
'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'),
'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
],
'default' => [
'scheme' => envNonEmpty('REDIS_SCHEME', 'tcp'),

View File

@ -88,7 +88,7 @@ return [
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL') . '/storage',
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],

View File

@ -87,7 +87,6 @@ use FireflyIII\TransactionRules\Actions\SetSourceAccount;
use FireflyIII\TransactionRules\Actions\UpdatePiggybank;
use FireflyIII\User;
/*
* DO NOT EDIT THIS FILE. IT IS AUTO GENERATED.
*

View File

@ -86,7 +86,7 @@ return [
'include_helpers' => false,
'helper_files' => [
base_path() . '/vendor/laravel/framework/src/Illuminate/Support/helpers.php',
base_path().'/vendor/laravel/framework/src/Illuminate/Support/helpers.php',
],
/*

View File

@ -93,7 +93,7 @@ return [
// daily, used in stack 'stack' by default:
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/ff3-' . PHP_SAPI . '.log'),
'path' => storage_path('logs/ff3-'.PHP_SAPI.'.log'),
'level' => envNonEmpty('APP_LOG_LEVEL', 'info'),
'days' => 7,
],

View File

@ -39,12 +39,12 @@ return [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailtrap.io'),
'port' => (int) env('MAIL_PORT', 2525),
'port' => (int)env('MAIL_PORT', 2525),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'verify_peer' => null !== env('MAIL_ENCRYPTION')
'verify_peer' => null !== env('MAIL_ENCRYPTION'),
],
'ses' => [

View File

@ -1,4 +1,5 @@
<?php
declare(strict_types=1);
return [

View File

@ -174,19 +174,42 @@ return [
'Form' => ['is_safe' => ['input', 'select', 'checkbox', 'model', 'open', 'radio', 'textarea', 'file']],
'ExpandedForm' => [
'is_safe' => [
'date', 'text', 'select', 'balance', 'optionsList', 'checkbox', 'amount', 'tags', 'integer', 'textarea', 'location', 'file', 'staticText',
'password', 'nonSelectableAmount', 'number', 'amountNoCurrency', 'percentage', 'objectGroup',
'date',
'text',
'select',
'balance',
'optionsList',
'checkbox',
'amount',
'tags',
'integer',
'textarea',
'location',
'file',
'staticText',
'password',
'nonSelectableAmount',
'number',
'amountNoCurrency',
'percentage',
'objectGroup',
],
],
'AccountForm' => [
'is_safe' => [
'activeWithdrawalDestinations', 'activeDepositDestinations', 'assetAccountCheckList', 'assetAccountList', 'longAccountList',
'activeWithdrawalDestinations',
'activeDepositDestinations',
'assetAccountCheckList',
'assetAccountList',
'longAccountList',
],
],
'CurrencyForm' => [
'is_safe' => [
'currencyList', 'currencyListEmpty', 'balanceAll',
'currencyList',
'currencyListEmpty',
'balanceAll',
],
],
'PiggyBankForm' => [
@ -196,7 +219,8 @@ return [
],
'RuleForm' => [
'is_safe' => [
'ruleGroupList', 'ruleGroupListWithEmpty',
'ruleGroupList',
'ruleGroupListWithEmpty',
],
],
],

View File

@ -1,4 +1,5 @@
<?php
/**
* 2016_06_16_000000_create_support_tables.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2016_06_16_000001_create_users_table.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2016_06_16_000002_create_main_tables.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2016_08_25_091522_changes_for_3101.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2016_09_12_121359_fix_nullables.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2016_10_09_150037_expand_transactions_table.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2016_10_22_075804_changes_for_v410.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2016_11_24_210552_changes_for_v420.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2016_12_22_150431_changes_for_v430.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2016_12_28_203205_changes_for_v431.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2017_04_13_163623_changes_for_v440.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2017_06_02_105232_changes_for_v450.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2017_08_20_062014_changes_for_v470.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* 2017_11_04_170844_changes_for_v470a.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -48,7 +48,8 @@ class CreateOauthAuthCodesTable extends Migration
public function up(): void
{
Schema::create(
'oauth_auth_codes', static function (Blueprint $table) {
'oauth_auth_codes',
static function (Blueprint $table) {
$table->string('id', 100)->primary();
$table->integer('user_id');
$table->integer('client_id');

View File

@ -48,7 +48,8 @@ class CreateOauthAccessTokensTable extends Migration
public function up(): void
{
Schema::create(
'oauth_access_tokens', static function (Blueprint $table) {
'oauth_access_tokens',
static function (Blueprint $table) {
$table->string('id', 100)->primary();
$table->integer('user_id')->index()->nullable();
$table->integer('client_id');

View File

@ -48,7 +48,8 @@ class CreateOauthRefreshTokensTable extends Migration
public function up(): void
{
Schema::create(
'oauth_refresh_tokens', static function (Blueprint $table) {
'oauth_refresh_tokens',
static function (Blueprint $table) {
$table->string('id', 100)->primary();
$table->string('access_token_id', 100)->index();
$table->boolean('revoked');

View File

@ -48,7 +48,8 @@ class CreateOauthClientsTable extends Migration
public function up(): void
{
Schema::create(
'oauth_clients', static function (Blueprint $table) {
'oauth_clients',
static function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->index()->nullable();
$table->string('name');

View File

@ -48,7 +48,8 @@ class CreateOauthPersonalAccessClientsTable extends Migration
public function up(): void
{
Schema::create(
'oauth_personal_access_clients', static function (Blueprint $table) {
'oauth_personal_access_clients',
static function (Blueprint $table) {
$table->increments('id');
$table->integer('client_id')->index();
$table->timestamps();

View File

@ -43,7 +43,6 @@ class ChangesForV473 extends Migration
Schema::table(
'bills',
static function (Blueprint $table) {
// cannot drop foreign keys in SQLite:
if ('sqlite' !== config('database.default')) {
$table->dropForeign('bills_transaction_currency_id_foreign');

View File

@ -44,7 +44,6 @@ class ChangesForV474 extends Migration
Schema::table(
'import_jobs',
static function (Blueprint $table) {
// cannot drop foreign keys in SQLite:
if ('sqlite' !== config('database.default')) {
$table->dropForeign('import_jobs_tag_id_foreign');

View File

@ -56,7 +56,8 @@ class ChangesForV475 extends Migration
public function up(): void
{
Schema::create(
'recurrences', static function (Blueprint $table) {
'recurrences',
static function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->softDeletes();
@ -80,7 +81,8 @@ class ChangesForV475 extends Migration
);
Schema::create(
'recurrences_transactions', static function (Blueprint $table) {
'recurrences_transactions',
static function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->softDeletes();
@ -103,7 +105,8 @@ class ChangesForV475 extends Migration
);
Schema::create(
'recurrences_repetitions', static function (Blueprint $table) {
'recurrences_repetitions',
static function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->softDeletes();
@ -118,7 +121,8 @@ class ChangesForV475 extends Migration
);
Schema::create(
'recurrences_meta', static function (Blueprint $table) {
'recurrences_meta',
static function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->softDeletes();
@ -132,7 +136,8 @@ class ChangesForV475 extends Migration
);
Schema::create(
'rt_meta', static function (Blueprint $table) {
'rt_meta',
static function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->softDeletes();

View File

@ -40,8 +40,8 @@ class ChangesForV477 extends Migration
public function down(): void
{
Schema::table(
'budget_limits', static function (Blueprint $table) {
'budget_limits',
static function (Blueprint $table) {
// cannot drop foreign keys in SQLite:
if ('sqlite' !== config('database.default')) {
$table->dropForeign('budget_limits_transaction_currency_id_foreign');

View File

@ -40,7 +40,8 @@ class ChangesForV479 extends Migration
public function down()
{
Schema::table(
'transaction_currencies', static function (Blueprint $table) {
'transaction_currencies',
static function (Blueprint $table) {
$table->dropColumn(['enabled']);
}
);

View File

@ -54,7 +54,8 @@ class ChangesForV4710 extends Migration
{
if (!Schema::hasTable('transaction_groups')) {
Schema::create(
'transaction_groups', static function (Blueprint $table) {
'transaction_groups',
static function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->softDeletes();

View File

@ -60,13 +60,15 @@ class ChangesForV4711 extends Migration
* nice.
*/
Schema::table(
'transaction_journals', static function (Blueprint $table) {
'transaction_journals',
static function (Blueprint $table) {
$table->dateTime('date')->change();
}
);
Schema::table(
'preferences', static function (Blueprint $table) {
'preferences',
static function (Blueprint $table) {
$table->text('data')->nullable()->change();
}
);

View File

@ -59,7 +59,8 @@ class ChangesForV4712 extends Migration
* nice.
*/
Schema::table(
'transaction_journals', static function (Blueprint $table) {
'transaction_journals',
static function (Blueprint $table) {
$table->dateTime('date')->change();
}
);

View File

@ -40,7 +40,8 @@ class FixLdapConfiguration extends Migration
public function down(): void
{
Schema::table(
'users', static function (Blueprint $table) {
'users',
static function (Blueprint $table) {
$table->dropColumn(['objectguid']);
}
);
@ -59,7 +60,8 @@ class FixLdapConfiguration extends Migration
* now. To support this, we add the column.
*/
Schema::table(
'users', static function (Blueprint $table) {
'users',
static function (Blueprint $table) {
$table->uuid('objectguid')->nullable()->after('id');
}
);

View File

@ -50,13 +50,15 @@ class ChangesForV480 extends Migration
}
);
Schema::table(
'rule_groups', static function (Blueprint $table) {
'rule_groups',
static function (Blueprint $table) {
$table->dropColumn('stop_processing');
}
);
Schema::table(
'users', static function (Blueprint $table) {
'users',
static function (Blueprint $table) {
$table->dropColumn('mfa_secret');
}
);
@ -84,12 +86,14 @@ class ChangesForV480 extends Migration
}
);
Schema::table(
'rule_groups', static function (Blueprint $table) {
'rule_groups',
static function (Blueprint $table) {
$table->boolean('stop_processing')->default(false);
}
);
Schema::table(
'users', static function (Blueprint $table) {
'users',
static function (Blueprint $table) {
$table->string('mfa_secret', 50)->nullable();
}
);

View File

@ -51,7 +51,8 @@ class MakeLocationsTable extends Migration
public function up()
{
Schema::create(
'locations', static function (Blueprint $table) {
'locations',
static function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
$table->softDeletes();

View File

@ -52,7 +52,8 @@ class ChangesForV530 extends Migration
{
if (!Schema::hasTable('object_groups')) {
Schema::create(
'object_groups', static function (Blueprint $table) {
'object_groups',
static function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id', false, true);
$table->timestamps();
@ -65,7 +66,8 @@ class ChangesForV530 extends Migration
}
if (!Schema::hasTable('object_groupables')) {
Schema::create(
'object_groupables', static function (Blueprint $table) {
'object_groupables',
static function (Blueprint $table) {
$table->integer('object_group_id');
$table->integer('object_groupable_id', false, true);
$table->string('object_groupable_type', 255);

View File

@ -41,7 +41,8 @@ class ChangesForV530a extends Migration
public function down(): void
{
Schema::table(
'bills', static function (Blueprint $table) {
'bills',
static function (Blueprint $table) {
$table->dropColumn('order');
}
);
@ -55,7 +56,8 @@ class ChangesForV530a extends Migration
public function up(): void
{
Schema::table(
'bills', static function (Blueprint $table) {
'bills',
static function (Blueprint $table) {
$table->integer('order', false, true)->default(0);
}
);

View File

@ -41,19 +41,22 @@ class ChangesForV540 extends Migration
public function down(): void
{
Schema::table(
'oauth_clients', static function (Blueprint $table) {
'oauth_clients',
static function (Blueprint $table) {
$table->dropColumn('provider');
}
);
Schema::table(
'accounts', static function (Blueprint $table) {
'accounts',
static function (Blueprint $table) {
$table->dropColumn('order');
}
);
Schema::table(
'bills', static function (Blueprint $table) {
'bills',
static function (Blueprint $table) {
$table->dropColumn('end_date');
$table->dropColumn('extension_date');
}
@ -68,24 +71,28 @@ class ChangesForV540 extends Migration
public function up(): void
{
Schema::table(
'accounts', static function (Blueprint $table) {
'accounts',
static function (Blueprint $table) {
$table->integer('order', false, true)->default(0);
}
);
Schema::table(
'oauth_clients', static function (Blueprint $table) {
'oauth_clients',
static function (Blueprint $table) {
$table->string('provider')->nullable();
}
);
Schema::table(
'bills', static function (Blueprint $table) {
'bills',
static function (Blueprint $table) {
$table->date('end_date')->nullable()->after('date');
$table->date('extension_date')->nullable()->after('end_date');
}
);
// make column nullable:
Schema::table(
'oauth_clients', function (Blueprint $table) {
'oauth_clients',
function (Blueprint $table) {
$table->string('secret', 100)->nullable()->change();
}
);

View File

@ -58,7 +58,8 @@ class ChangesForV550 extends Migration
// expand budget / transaction journal table.
Schema::table(
'budget_transaction_journal', function (Blueprint $table) {
'budget_transaction_journal',
function (Blueprint $table) {
$table->dropForeign('budget_id_foreign');
$table->dropColumn('budget_limit_id');
}
@ -91,7 +92,8 @@ class ChangesForV550 extends Migration
Schema::dropIfExists('jobs');
// this is the NEW table
Schema::create(
'jobs', function (Blueprint $table) {
'jobs',
function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('queue')->index();
$table->longText('payload');
@ -106,7 +108,8 @@ class ChangesForV550 extends Migration
// create new failed_jobs table.
Schema::create(
'failed_jobs', function (Blueprint $table) {
'failed_jobs',
function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('uuid')->unique();
$table->text('connection');
@ -119,7 +122,8 @@ class ChangesForV550 extends Migration
// update budget / transaction journal table.
Schema::table(
'budget_transaction_journal', function (Blueprint $table) {
'budget_transaction_journal',
function (Blueprint $table) {
if (!Schema::hasColumn('budget_transaction_journal', 'budget_limit_id')) {
$table->integer('budget_limit_id', false, true)->nullable()->default(null)->after('budget_id');
$table->foreign('budget_limit_id', 'budget_id_foreign')->references('id')->on('budget_limits')->onDelete('set null');

View File

@ -39,13 +39,12 @@ class ChangesForV550b2 extends Migration
public function down(): void
{
Schema::table(
'recurrences_transactions', function (Blueprint $table) {
'recurrences_transactions',
function (Blueprint $table) {
$table->dropForeign('type_foreign');
if (Schema::hasColumn('recurrences_transactions', 'transaction_type_id')) {
$table->dropColumn('transaction_type_id');
}
}
);
}
@ -59,7 +58,8 @@ class ChangesForV550b2 extends Migration
{
// expand recurrence transaction table
Schema::table(
'recurrences_transactions', function (Blueprint $table) {
'recurrences_transactions',
function (Blueprint $table) {
if (!Schema::hasColumn('recurrences_transactions', 'transaction_type_id')) {
$table->integer('transaction_type_id', false, true)->nullable()->after('transaction_currency_id');
$table->foreign('transaction_type_id', 'type_foreign')->references('id')->on('transaction_types')->onDelete('set null');

View File

@ -34,7 +34,8 @@ class AddLdapColumnsToUsersTable extends Migration
public function down()
{
Schema::table(
'users', function (Blueprint $table) {
'users',
function (Blueprint $table) {
$table->dropColumn(['domain']);
}
);
@ -46,7 +47,8 @@ class AddLdapColumnsToUsersTable extends Migration
public function up()
{
Schema::table(
'users', function (Blueprint $table) {
'users',
function (Blueprint $table) {
$table->string('domain')->nullable();
}
);

View File

@ -49,7 +49,8 @@ class ExtendCurrencyInfo extends Migration
public function up()
{
Schema::table(
'transaction_currencies', function (Blueprint $table) {
'transaction_currencies',
function (Blueprint $table) {
$table->string('code', 51)->change();
$table->string('symbol', 51)->change();
}

View File

@ -32,8 +32,21 @@ use Illuminate\Support\Facades\Schema;
class UserGroups extends Migration
{
private array $tables
= ['accounts', 'attachments', 'available_budgets', 'bills', 'budgets', 'categories', 'recurrences', 'rule_groups', 'rules', 'tags',
'transaction_groups', 'transaction_journals', 'webhooks'];
= [
'accounts',
'attachments',
'available_budgets',
'bills',
'budgets',
'categories',
'recurrences',
'rule_groups',
'rules',
'tags',
'transaction_groups',
'transaction_journals',
'webhooks',
];
/**
* Reverse the migrations.
@ -46,8 +59,8 @@ class UserGroups extends Migration
/** @var string $tableName */
foreach ($this->tables as $tableName) {
Schema::table(
$tableName, function (Blueprint $table) use ($tableName) {
$tableName,
function (Blueprint $table) use ($tableName) {
$table->dropForeign(sprintf('%s_to_ugi', $tableName));
if (Schema::hasColumn($tableName, 'user_group_id')) {
$table->dropColumn('user_group_id');
@ -57,13 +70,12 @@ class UserGroups extends Migration
}
Schema::table(
'users', function (Blueprint $table) {
'users',
function (Blueprint $table) {
$table->dropForeign('type_user_group_id');
if (Schema::hasColumn('users', 'user_group_id')) {
$table->dropColumn('user_group_id');
}
}
);
@ -84,7 +96,8 @@ class UserGroups extends Migration
* may have multiple roles in a group
*/
Schema::create(
'user_groups', static function (Blueprint $table) {
'user_groups',
static function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
$table->softDeletes();
@ -95,7 +108,8 @@ class UserGroups extends Migration
);
Schema::create(
'user_roles', static function (Blueprint $table) {
'user_roles',
static function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
$table->softDeletes();
@ -122,7 +136,8 @@ class UserGroups extends Migration
}
);
Schema::table(
'users', function (Blueprint $table) {
'users',
function (Blueprint $table) {
if (!Schema::hasColumn('users', 'user_group_id')) {
$table->bigInteger('user_group_id', false, true)->nullable();
$table->foreign('user_group_id', 'type_user_group_id')->references('id')->on('user_groups')->onDelete('set null')->onUpdate('cascade');
@ -134,15 +149,16 @@ class UserGroups extends Migration
/** @var string $tableName */
foreach ($this->tables as $tableName) {
Schema::table(
$tableName, function (Blueprint $table) use ($tableName) {
$tableName,
function (Blueprint $table) use ($tableName) {
if (!Schema::hasColumn($tableName, 'user_group_id')) {
$table->bigInteger('user_group_id', false, true)->nullable()->after('user_id');
$table->foreign('user_group_id', sprintf('%s_to_ugi', $tableName))->references('id')->on('user_groups')->onDelete('set null')->onUpdate('cascade');
$table->foreign('user_group_id', sprintf('%s_to_ugi', $tableName))->references('id')->on('user_groups')->onDelete('set null')->onUpdate(
'cascade'
);
}
}
);
}
}
}

View File

@ -29,7 +29,7 @@ use Illuminate\Support\Facades\Schema;
/**
*
*/
return new class extends Migration {
return new class () extends Migration {
/**
* Run the migrations.
*
@ -38,8 +38,8 @@ return new class extends Migration {
public function up(): void
{
Schema::table(
'currency_exchange_rates', function (Blueprint $table) {
'currency_exchange_rates',
function (Blueprint $table) {
if (!Schema::hasColumn('currency_exchange_rates', 'user_group_id')) {
$table->bigInteger('user_group_id', false, true)->nullable()->after('user_id');
$table->foreign('user_group_id', 'cer_to_ugi')->references('id')->on('user_groups')->onDelete('set null')->onUpdate('cascade');
@ -56,8 +56,8 @@ return new class extends Migration {
public function down(): void
{
Schema::table(
'currency_exchange_rates', function (Blueprint $table) {
'currency_exchange_rates',
function (Blueprint $table) {
$table->dropForeign('cer_to_ugi');
if (Schema::hasColumn('currency_exchange_rates', 'user_group_id')) {
$table->dropColumn('user_group_id');

View File

@ -26,8 +26,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
return new class () extends Migration {
/**
* Run the migrations.
*

View File

@ -26,8 +26,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
return new class () extends Migration {
/**
* Run the migrations.
*

View File

@ -26,8 +26,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
return new class () extends Migration {
/**
* Run the migrations.
*

View File

@ -1,4 +1,5 @@
<?php
/**
* AccountTypeSeeder.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -49,7 +49,7 @@ class ConfigSeeder extends Seeder
);
}
if (null !== $entry) {
$version = (int) config('firefly.db_version');
$version = (int)config('firefly.db_version');
$entry->data = $version;
$entry->save();

View File

@ -1,4 +1,5 @@
<?php
/**
* DatabaseSeeder.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* LinkTypeSeeder.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* PermissionSeeder.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* TransactionCurrencySeeder.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -1,4 +1,5 @@
<?php
/**
* TransactionTypeSeeder.php
* Copyright (c) 2019 james@firefly-iii.org.

View File

@ -77,7 +77,7 @@ export default defineComponent(
const getLocale = function () {
return (new Prefs).get('locale').then(data => {
const locale = data.data.data.attributes.data.replace('_','-');
const locale = data.data.data.attributes.data.replace('_', '-');
ffStore.setLocale(locale);
}).catch((err) => {

View File

@ -33,7 +33,7 @@ export default class Get extends Api {
*/
get(identifier, date) {
let params = {date: date};
if(!date) {
if (!date) {
return this.apiGet(identifier);
}
return this.apiGet(identifier, params);

View File

@ -21,7 +21,7 @@
import {api} from "boot/axios";
import Api from "src/api/root/api";
export default class List extends Api{
export default class List extends Api {
constructor() {
super('accounts');
}

View File

@ -20,7 +20,7 @@
import {api} from "boot/axios";
export default class Authenticate {
export default class Authenticate {
async authenticate() {
return await api.get('/sanctum/csrf-cookie');
}

View File

@ -25,10 +25,12 @@ export default class Get {
let url = '/api/v1/categories/' + identifier;
return api.get(url);
}
transactions(identifier, page, cacheKey) {
let url = '/api/v1/categories/' + identifier + '/transactions';
return api.get(url, {params: {page: page, cache: cacheKey}});
}
transactionsWithoutCategory(page, cacheKey) {
let url = '/api/v1/categories/transactions-without-category';
return api.get(url, {params: {page: page, cache: cacheKey}});

View File

@ -25,6 +25,7 @@ export default class Get {
let url = '/api/v1/currencies/' + identifier;
return api.get(url);
}
transactions(identifier, page, cacheKey) {
let url = '/api/v1/currencies/' + identifier + '/transactions';
return api.get(url, {params: {page: page, cache: cacheKey}});

View File

@ -20,9 +20,12 @@
import {api} from "boot/axios";
import Authenticate from '../authenticate/index';
export default class Currencies {
default() {
let auth = new Authenticate();
return auth.authenticate().then(() => {return api.get('/api/v1/currencies/default')});
return auth.authenticate().then(() => {
return api.get('/api/v1/currencies/default')
});
}
}

View File

@ -25,6 +25,7 @@ export default class Post {
let url = '/api/v1/currencies';
return api.post(url, submission);
}
makeDefault(currency) {
let url = '/api/v1/currencies/' + currency + '/default';
return api.post(url);

View File

@ -25,6 +25,7 @@ export default class Get {
let url = '/api/v1/piggy_banks/' + identifier;
return api.get(url);
}
transactions(identifier, page, cacheKey) {
let url = '/api/v1/piggy_banks/' + identifier + '/transactions';
return api.get(url, {params: {page: page, cache: cacheKey}});

View File

@ -24,6 +24,7 @@ export default class Preferences {
getByName(name) {
return api.get('/api/v1/preferences/' + name);
}
postByName(name, value) {
return api.post('/api/v1/preferences', {name: name, data: value});
}

View File

@ -23,11 +23,12 @@ import {api} from "boot/axios";
export default class Get {
get(identifier, date) {
let url = '/api/v1/rule_groups/' + identifier;
if(!date) {
if (!date) {
return api.get(url);
}
return api.get(url, {params: {date: date}});
}
rules(identifier, page, cacheKey) {
let url = '/api/v1/rule_groups/' + identifier + '/rules';
return api.get(url, {params: {page: page, cache: cacheKey}});

View File

@ -23,7 +23,7 @@ import {api} from "boot/axios";
export default class Get {
get(identifier, date) {
let url = '/api/v1/rules/' + identifier;
if(!date) {
if (!date) {
return api.get(url);
}
return api.get(url, {params: {date: date}});

View File

@ -25,6 +25,7 @@ export default class Get {
let url = '/api/v1/bills/' + identifier;
return api.get(url);
}
transactions(identifier, page, cacheKey) {
let url = '/api/v1/bills/' + identifier + '/transactions';
return api.get(url, {params: {page: page, cache: cacheKey}});

View File

@ -1,4 +1,3 @@
/*
* configuration.js
* Copyright (c) 2022 james@firefly-iii.org
@ -22,11 +21,11 @@
import {api} from "boot/axios";
export default class Configuration {
get (identifier) {
get(identifier) {
return api.get('/api/v1/configuration/' + identifier);
}
put (identifier, value) {
put(identifier, value) {
return api.put('/api/v1/configuration/' + identifier, value);
}
}

View File

@ -25,6 +25,7 @@ export default class Get {
let url = '/api/v1/tags/' + identifier;
return api.get(url);
}
transactions(identifier, page, cacheKey) {
let url = '/api/v1/tags/' + identifier + '/transactions';
return api.get(url, {params: {page: page, cache: cacheKey}});

View File

@ -33,13 +33,14 @@ export default class Get extends Api {
*/
get(identifier, date) {
let params = {date: date};
if(!date) {
if (!date) {
return this.apiGet(identifier);
}
return this.apiGet(identifier, params);
}
transactions(identifier, params) {
if(!params) {
if (!params) {
return this.apiGetTransactions(identifier);
}
return this.apiGetTransactions(identifier, params);

View File

@ -24,6 +24,7 @@ export default class Preferences {
get(name) {
return api.get('/api/v2/preferences/' + name);
}
// postByName(name, value) {
// return api.post('/api/v1/preferences', {name: name, data: value});
// }

View File

@ -52,6 +52,7 @@ export default class Api {
}
return api.get(url);
}
/**
*
* @param object

View File

@ -24,8 +24,8 @@ import {setupCache} from 'axios-cache-adapter'
const cache = setupCache({
maxAge: 15 * 60 * 1000,
exclude: { query: false }
})
exclude: {query: false}
})
// Be careful when using SSR for cross-request state pollution
// due to creating a Singleton instance here;

View File

@ -18,11 +18,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { boot } from 'quasar/wrappers'
import { createI18n } from 'vue-i18n'
import {boot} from 'quasar/wrappers'
import {createI18n} from 'vue-i18n'
import messages from 'src/i18n'
export default boot(({ app }) => {
export default boot(({app}) => {
const i18n = createI18n({
locale: 'en-US',
messages

View File

@ -19,14 +19,14 @@
-->
<template>
<div class="q-ma-md" v-if="showAlert">
<div v-if="showAlert" class="q-ma-md">
<div class="row">
<div class="col-12">
<q-banner :class="alertClass" inline-actions>
{{ message }}
<template v-slot:action>
<q-btn flat @click="dismissBanner" color="white" label="Dismiss"/>
<q-btn flat color="white" v-if="showAction" :to="actionLink" :label="actionText"/>
<q-btn color="white" flat label="Dismiss" @click="dismissBanner"/>
<q-btn v-if="showAction" :label="actionText" :to="actionLink" color="white" flat/>
</template>
</q-banner>
</div>
@ -90,7 +90,7 @@ export default {
}
this.$q.localStorage.set('flash', false);
},
dismissBanner: function() {
dismissBanner: function () {
this.showAlert = false;
}
}

View File

@ -33,29 +33,23 @@
</template>
<script>
import {
defineComponent,
PropType,
computed,
ref,
toRef,
Ref,
} from 'vue';
import { Todo, Meta } from './models';
import {computed, defineComponent, PropType, ref, Ref, toRef,} from 'vue';
import {Meta, Todo} from './models';
function useClickCount() {
const clickCount = ref(0);
function increment() {
clickCount.value += 1
return clickCount.value;
}
return { clickCount, increment };
return {clickCount, increment};
}
function useDisplayTodo(todos: Ref<Todo[]>) {
const todoCount = computed(() => todos.value.length);
return { todoCount };
return {todoCount};
}
export default defineComponent({
@ -66,11 +60,11 @@ export default defineComponent({
required: true
},
todos: {
type: Array as PropType<Todo[]>,
type: Array as PropType < Todo[] >,
default: () => []
},
meta: {
type: Object as PropType<Meta>,
type: Object as PropType < Meta >,
required: true
},
active: {
@ -78,7 +72,7 @@ export default defineComponent({
}
},
setup(props) {
return { ...useClickCount(), ...useDisplayTodo(toRef(props, 'todos')) };
return {...useClickCount(), ...useDisplayTodo(toRef(props, 'todos'))};
},
});
</script>

View File

@ -22,14 +22,15 @@
<div class="q-pa-xs">
<div>
<!-- <DatePicker v-model="range" is-range :is-dark="darkMode" :model-config="modelConfig"/> -->
<q-date v-model="localRange" range minimal mask="YYYY-MM-DD"/>
<q-date v-model="localRange" mask="YYYY-MM-DD" minimal range/>
</div>
<div class="q-mt-xs">
<span class="q-mr-xs"><q-btn @click="resetRange" size="sm" color="primary" label="Reset"/></span>
<q-btn color="primary" size="sm" label="Change range" icon-right="fas fa-caret-down" title="More options in preferences">
<span class="q-mr-xs"><q-btn color="primary" label="Reset" size="sm" @click="resetRange"/></span>
<q-btn color="primary" icon-right="fas fa-caret-down" label="Change range" size="sm"
title="More options in preferences">
<q-menu>
<q-list style="min-width: 100px">
<q-item clickable v-close-popup v-for="choice in rangeChoices" @click="setViewRange(choice)">
<q-item v-for="choice in rangeChoices" v-close-popup clickable @click="setViewRange(choice)">
<q-item-section>{{ $t('firefly.pref_' + choice.value) }}</q-item-section>
</q-item>
</q-list>

View File

@ -20,16 +20,16 @@
<template>
<q-item
:href="link"
clickable
tag="a"
target="_blank"
:href="link"
>
<q-item-section
v-if="icon"
avatar
>
<q-icon :name="icon" />
<q-icon :name="icon"/>
</q-item-section>
<q-item-section>
@ -42,7 +42,7 @@
</template>
<script>
import { defineComponent } from 'vue'
import {defineComponent} from 'vue'
export default defineComponent({
name: 'EssentialLink',

View File

@ -27,7 +27,7 @@
</q-item-section>
</q-item>
<q-separator/>
<ApexChart ref="chart" height="350" type="line" :options="options" :series="series"></ApexChart>
<ApexChart ref="chart" :options="options" :series="series" height="350" type="line"></ApexChart>
</q-card>
</div>
<div>
@ -107,11 +107,11 @@ export default {
},
methods: {
numberFormatter: function (value, index) {
if(index instanceof Object) {
if (index instanceof Object) {
let currencyCode = this.currencies[index.seriesIndex] ?? 'EUR';
return Intl.NumberFormat(this.locale, {style: 'currency', currency: currencyCode}).format(value);
}
if(Number.isInteger(index)) {
if (Number.isInteger(index)) {
let currencyCode = this.currencies[index] ?? 'EUR';
return Intl.NumberFormat(this.locale, {style: 'currency', currency: currencyCode}).format(value);
}
@ -142,10 +142,10 @@ export default {
series = {};
series.name = data[i].label;
series.data = [];
if(!data[i].converted) {
if (!data[i].converted) {
this.currencies.push(data[i].currency_code);
}
if(data[i].converted) {
if (data[i].converted) {
this.currencies.push(data[i].native_code);
}
for (let ii in data[i].entries) {

View File

@ -33,10 +33,10 @@
<q-card-section horizontal>
<q-card-section>
<q-circular-progress
:value="percentage"
size="50px"
:thickness="0.22"
:value="percentage"
color="positive"
size="50px"
track-color="negative"
/>
</q-card-section>
@ -52,10 +52,12 @@
{{ formatAmount(item.code, item.sum) }}<span v-if="index+1 !== unpaid.length"> + </span></span>
</span>
<br/>
<span v-if="paid.length > 0" :title="formatAmount(this.currency, this.paidAmount)">{{ $t('firefly.bills_paid') }}:</span>
<span v-if="paid.length > 0" :title="formatAmount(this.currency, this.paidAmount)">{{
$t('firefly.bills_paid')
}}:</span>
<span v-for="(item, index) in paid">
<span :title="formatAmount(item.native_code, item.native_sum)">
{{formatAmount(item.code, item.sum) }}
{{ formatAmount(item.code, item.sum) }}
</span>
<span v-if="index+1 !== paid.length"> + </span></span>
</q-card-section>

View File

@ -139,8 +139,8 @@ export default {
},
parseBudgetLimits: function (data, budget) {
console.log('Parse for ' + budget.name);
for(let i in data) {
if(data.hasOwnProperty(i)) {
for (let i in data) {
if (data.hasOwnProperty(i)) {
const current = data[i];
budget.limits.push(
{

View File

@ -32,14 +32,16 @@
<q-separator/>
<q-card-section horizontal>
<q-card-section>
<q-icon name="fas fa-chart-line" size="50px" :color="primary > 0 ? 'positive' : 'negative'"/>
<q-icon :color="primary > 0 ? 'positive' : 'negative'" name="fas fa-chart-line" size="50px"/>
</q-card-section>
<q-separator vertical/>
<q-card-section>
<strong>{{ formatAmount(currency, primary) }}</strong><br/>
<small>
<span v-for="(item, index) in netWorth">
<span :title="formatAmount(item.native_code, item.native_sum)">{{ formatAmount(item.code, item.sum) }}</span>
<span :title="formatAmount(item.native_code, item.native_sum)">{{
formatAmount(item.code, item.sum)
}}</span>
<span v-if="index+1 !== netWorth.length"> + </span></span>
</small>
</q-card-section>
@ -104,7 +106,7 @@ export default {
if (!current.converted) {
this.primary = this.primary + parseFloat(current.sum);
}
if(parseFloat(current.sum) !== 0.0) {
if (parseFloat(current.sum) !== 0.0) {
this.netWorth.push(
{
sum: current.sum,
@ -120,7 +122,10 @@ export default {
},
// TODO this method is recycled a lot.
formatAmount: function (currencyCode, amount) {
return Intl.NumberFormat(this.store?.getLocale ?? 'en-US', {style: 'currency', currency: currencyCode}).format(amount);
return Intl.NumberFormat(this.store?.getLocale ?? 'en-US', {
style: 'currency',
currency: currencyCode
}).format(amount);
},
},
}

View File

@ -21,7 +21,7 @@
<template>
<div class="row">
<div class="col q-mb-xs">
<q-banner rounded class="bg-purple-8 text-white">
<q-banner class="bg-purple-8 text-white" rounded>
Hi! You must be new to Firefly III. Welcome! Please fill in this form to create some basic accounts and get you
started.
</q-banner>
@ -37,12 +37,12 @@
<div class="row q-mb-xs">
<div class="col-8 offset-2">
<q-input
:error-message="bank_name_error"
:error="bank_name_has_error"
bottom-slots
v-model="bank_name"
:disable="disabledInput"
clearable
outlined v-model="bank_name" label="The name of your bank">
:error="bank_name_has_error"
:error-message="bank_name_error"
bottom-slots
clearable label="The name of your bank" outlined>
<template v-slot:prepend>
<q-icon name="fas fa-university"/>
</template>
@ -52,23 +52,23 @@
<div class="row q-mb-xs">
<div class="col-3 offset-2">
<q-select
:error-message="currency_error"
:error="currency_has_error"
bottom-slots
v-model="currency"
:disable="disabledInput"
outlined
v-model="currency" emit-value class="q-pr-xs"
map-options :options="currencies" label="Currency"/>
:error="currency_has_error"
:error-message="currency_error"
:options="currencies"
bottom-slots class="q-pr-xs" emit-value
label="Currency" map-options outlined/>
</div>
<div class="col-5">
<q-input
:error-message="bank_balance_error"
:error="bank_balance_has_error"
bottom-slots
v-model="bank_balance"
:disable="disabledInput"
outlined
v-model="bank_balance" :mask="balance_input_mask" reverse-fill-mask fill-mask="0"
label="Today's balance" hint="Enter your current balance">
:error="bank_balance_has_error"
:error-message="bank_balance_error"
:mask="balance_input_mask"
bottom-slots fill-mask="0" hint="Enter your current balance" label="Today's balance"
outlined reverse-fill-mask>
<template v-slot:prepend>
<q-icon name="fas fa-money-bill-wave"/>
</template>
@ -78,13 +78,13 @@
<div class="row q-mb-xs">
<div class="col-8 offset-2">
<q-input
:error-message="savings_balance_error"
:error="savings_balance_has_error"
bottom-slots
v-model="savings_balance"
:disable="disabledInput"
outlined
v-model="savings_balance" :mask="balance_input_mask" reverse-fill-mask fill-mask="0"
label="Today's savings account balance" hint="Leave empty or set to zero if not relevant.">
:error="savings_balance_has_error"
:error-message="savings_balance_error"
:mask="balance_input_mask"
bottom-slots fill-mask="0" hint="Leave empty or set to zero if not relevant." label="Today's savings account balance"
outlined reverse-fill-mask>
<template v-slot:prepend>
<q-icon name="fas fa-coins"/>
</template>
@ -105,21 +105,21 @@
<div class="row q-mb-xs">
<div class="col-8 offset-2">
<q-select
:error-message="language_error"
:error="language_has_error"
bottom-slots
outlined
v-model="language"
:disable="disabledInput"
v-model="language" emit-value
map-options :options="languages" label="I prefer the following language"/>
:error="language_has_error"
:error-message="language_error"
:options="languages"
bottom-slots emit-value
label="I prefer the following language" map-options outlined/>
</div>
</div>
<div class="row">
<div class="col-10 offset-2">
<q-checkbox
:disable="disabledInput"
v-model="manage_cash" label="I want to manage cash using Firefly III"/>
v-model="manage_cash"
:disable="disabledInput" label="I want to manage cash using Firefly III"/>
<q-banner v-if="manage_cash_has_error" class="text-white bg-red">{{ manage_cash_error }}</q-banner>
</div>
</div>
@ -127,8 +127,8 @@
<div class="row">
<div class="col-8 offset-2">
<q-checkbox
:disable="disabledInput"
v-model="have_cc" label="I have a credit card."/>
v-model="have_cc"
:disable="disabledInput" label="I have a credit card."/>
<q-banner v-if="have_cc_has_error" class="text-white bg-red">{{ have_cc_error }}</q-banner>
</div>
</div>
@ -136,8 +136,8 @@
<div class="row">
<div class="col-8 offset-2">
<q-checkbox
:disable="disabledInput"
v-model="have_questions" label="I know where to go when I have questions"/>
v-model="have_questions"
:disable="disabledInput" label="I know where to go when I have questions"/>
<div class="q-px-sm">
Hint: visit <a href="https://github.com/firefly-iii/firefly-iii/discussions/">GitHub</a>
or <a href="#">Gitter.im</a>. You can also

View File

@ -33,10 +33,10 @@
<q-card-section horizontal>
<q-card-section>
<q-circular-progress
:value="percentage"
size="50px"
:thickness="0.22"
:value="percentage"
color="negative"
size="50px"
track-color="positive"
/>
</q-card-section>
@ -48,14 +48,20 @@
<span :title="formatAmount(this.currency, this.budgetedAmount)">{{ $t('firefly.budgeted') }}</span>:
<!-- list budgeted -->
<span v-for="(item, index) in budgeted">
<span :title="formatAmount(item.native_code, item.native_sum)">{{ formatAmount(item.code, item.sum) }}</span>
<span :title="formatAmount(item.native_code, item.native_sum)">{{
formatAmount(item.code, item.sum)
}}</span>
<span v-if="index+1 !== budgeted.length"> + </span>
</span>
<br />
<span v-if="spent.length > 0" :title="formatAmount(this.currency, this.spentAmount)">{{ $t('firefly.spent') }}: </span>
<br/>
<span v-if="spent.length > 0" :title="formatAmount(this.currency, this.spentAmount)">{{
$t('firefly.spent')
}}: </span>
<!-- list spent -->
<span v-for="(item, index) in spent">
<span :title="formatAmount(item.native_code, item.native_sum)">{{ formatAmount(item.code, item.sum) }}</span>
<span :title="formatAmount(item.native_code, item.native_sum)">{{
formatAmount(item.code, item.sum)
}}</span>
<span v-if="index+1 !== spent.length"> + </span></span>
</q-card-section>
</q-card-section>

View File

@ -25,7 +25,7 @@
<q-item-section>
<q-item-label><strong>{{ accountName }}</strong>
<span v-if="accountCurrencyCode !== ''">
({{ formatAmount(accountCurrencyCode,accountBalance) }})
({{ formatAmount(accountCurrencyCode, accountBalance) }})
</span>
</q-item-label>
</q-item-section>
@ -52,8 +52,8 @@
{{ tr.description }}
<br/>
</span>
<router-link :to="{ name: 'transactions.show', params: {id: transaction.transactionGroupId} }"
v-if="transaction.transactions.length === 1">
<router-link v-if="transaction.transactions.length === 1"
:to="{ name: 'transactions.show', params: {id: transaction.transactionGroupId} }">
{{ tr.description }}
</router-link>
</span>
@ -86,8 +86,13 @@
<!-- show foreign amount if present and not converted (may lead to double amounts) -->
<span v-if="null !== tr.foreign_amount">
<span v-if="false === tr.foreign_currency_converted"> ({{ formatAmount(tr.foreign_currency_code, tr.foreign_amount) }})</span>
<span v-if="true === tr.foreign_currency_converted" :title="formatAmount(tr.foreign_currency_code, tr.foreign_amount)"> ({{ formatAmount(tr.native_currency_code, tr.native_foreign_amount) }})</span>
<span v-if="false === tr.foreign_currency_converted"> ({{
formatAmount(tr.foreign_currency_code, tr.foreign_amount)
}})</span>
<span v-if="true === tr.foreign_currency_converted"
:title="formatAmount(tr.foreign_currency_code, tr.foreign_amount)"> ({{
formatAmount(tr.native_currency_code, tr.native_foreign_amount)
}})</span>
</span>
<br v-if="transaction.transactions.length > 1"/>
</span>

View File

@ -20,8 +20,8 @@
<template>
<div class="row">
<div class="col q-mr-sm" v-for="(account) in accounts">
<TransactionList :account-id="account" />
<div v-for="(account) in accounts" class="col q-mr-sm">
<TransactionList :account-id="account"/>
</div>
</div>
</template>
@ -44,13 +44,13 @@ export default {
this.getAccounts();
},
methods: {
getAccounts: function() {
getAccounts: function () {
(new Preferences).get('frontpageAccounts').then((response) => this.parseAccounts(response.data));
},
parseAccounts: function(data) {
parseAccounts: function (data) {
const content = data.data.attributes.data;
for(let i in content) {
if(content.hasOwnProperty(i)) {
for (let i in content) {
if (content.hasOwnProperty(i)) {
this.accounts.push(content[i]);
}
}

View File

@ -20,13 +20,13 @@
<template>
<q-table
:title="title"
:rows="rows"
:columns="columns"
row-key="group_id"
v-model:pagination="pagination"
:columns="columns"
:loading="loading"
:rows="rows"
:title="title"
class="q-ma-md"
row-key="group_id"
@request="onRequest"
>
<template v-slot:header="props">
@ -44,13 +44,13 @@
<template v-slot:body="props">
<q-tr :props="props">
<q-td auto-width>
<q-btn size="sm" v-if="props.row.splits.length > 1" round dense @click="props.expand = !props.expand"
:icon="props.expand ? 'fas fa-minus-circle' : 'fas fa-plus-circle'"/>
<q-btn v-if="props.row.splits.length > 1" :icon="props.expand ? 'fas fa-minus-circle' : 'fas fa-plus-circle'" dense round size="sm"
@click="props.expand = !props.expand"/>
</q-td>
<q-td key="type" :props="props">
<q-icon class="fas fa-long-arrow-alt-right" v-if="'deposit' === props.row.type.toLowerCase()"></q-icon>
<q-icon class="fas fa-long-arrow-alt-left" v-if="'withdrawal' === props.row.type.toLowerCase()"></q-icon>
<q-icon class="fas fa-arrows-alt-h" v-if="'transfer' === props.row.type.toLowerCase()"></q-icon>
<q-icon v-if="'deposit' === props.row.type.toLowerCase()" class="fas fa-long-arrow-alt-right"></q-icon>
<q-icon v-if="'withdrawal' === props.row.type.toLowerCase()" class="fas fa-long-arrow-alt-left"></q-icon>
<q-icon v-if="'transfer' === props.row.type.toLowerCase()" class="fas fa-arrows-alt-h"></q-icon>
</q-td>
<q-td key="description" :props="props">
<router-link :to="{ name: 'transactions.show', params: {id: props.row.group_id} }" class="text-primary">
@ -79,12 +79,12 @@
<q-td key="menu" :props="props">
<q-btn-dropdown color="primary" label="Actions" size="sm">
<q-list>
<q-item clickable v-close-popup :to="{name: 'transactions.edit', params: {id: props.row.group_id}}">
<q-item v-close-popup :to="{name: 'transactions.edit', params: {id: props.row.group_id}}" clickable>
<q-item-section>
<q-item-label>Edit</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup
<q-item v-close-popup clickable
@click="deleteTransaction(props.row.group_id, props.row.description, props.row.group_title)">
<q-item-section>
<q-item-label>Delete</q-item-label>
@ -94,7 +94,7 @@
</q-btn-dropdown>
</q-td>
</q-tr>
<q-tr v-show="props.expand" :props="props" v-for="currentRow in props.row.splits">
<q-tr v-for="currentRow in props.row.splits" v-show="props.expand" :props="props">
<q-td auto-width/>
<q-td auto-width/>
<q-td>

View File

@ -33,17 +33,17 @@
// Tip: Use the "Theme Builder" on Quasar's documentation website.
// $primary : #1976D2;
$primary : #1E6581;
$primary: #1E6581;
$secondary : #26A69A;
$accent : #9C27B0;
$secondary: #26A69A;
$accent: #9C27B0;
$dark : #1D1D1D;
$dark: #1D1D1D;
// $positive : #21BA45;
$positive: #64B624;
// $negative : #C10015;
$negative: #CD5029;
$info : #31CCEC;
$warning : #F2C037;
$info: #31CCEC;
$warning: #F2C037;

View File

@ -20,44 +20,45 @@
<!DOCTYPE html>
<html>
<head>
<head>
<title><%= productName %></title>
<meta charset="utf-8">
<meta name="description" content="<%= productDescription %>">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">
<meta content="<%= productDescription %>" name="description">
<meta content="telephone=no" name="format-detection">
<meta content="no" name="msapplication-tap-highlight">
<meta content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>"
name="viewport">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<link href="favicon-32x32.png" rel="icon" sizes="32x32" type="image/png">
<link href="favicon-16x16.png" rel="icon" sizes="16x16" type="image/png">
<link rel="apple-touch-icon" sizes="76x76" href="maskable76.png">
<link rel="apple-touch-icon" sizes="120x120" href="maskable120.png">
<link rel="apple-touch-icon" sizes="152x152" href="maskable152.png">
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link href="maskable76.png" rel="apple-touch-icon" sizes="76x76">
<link href="maskable120.png" rel="apple-touch-icon" sizes="120x120">
<link href="maskable152.png" rel="apple-touch-icon" sizes="152x152">
<link href="apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180">
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#3c8dbc">
<link color="#3c8dbc" href="safari-pinned-tab.svg" rel="mask-icon">
<link href="maskable192.png" rel="icon" sizes="192x192">
<link href="maskable128.png" rel="icon" sizes="128x128">
<link rel="manifest" href="manifest.webmanifest">
<link href="manifest.webmanifest" rel="manifest">
<meta name="msapplication-TileColor" content="#1e6581">
<meta name="msapplication-TileImage" content="maskable512.png">
<meta name="msapplication-tap-highlight" content="no">
<meta name="application-name" content="Firefly III">
<meta name="robots" content="noindex, nofollow, noarchive, noodp, NoImageIndex, noydir">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-title" content="Firefly III">
<meta name="application-name" content="Firefly III">
<meta name="msapplication-TileColor" content="#3c8dbc">
<meta name="msapplication-TileImage" content="mstile-144x144.png?v=3e8AboOwbd">
<meta name="theme-color" content="#3c8dbc">
</head>
<body>
<div id="q-app"></div>
</body>
<meta content="#1e6581" name="msapplication-TileColor">
<meta content="maskable512.png" name="msapplication-TileImage">
<meta content="no" name="msapplication-tap-highlight">
<meta content="Firefly III" name="application-name">
<meta content="noindex, nofollow, noarchive, noodp, NoImageIndex, noydir" name="robots">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="Firefly III" name="apple-mobile-web-app-title">
<meta content="Firefly III" name="application-name">
<meta content="#3c8dbc" name="msapplication-TileColor">
<meta content="mstile-144x144.png?v=3e8AboOwbd" name="msapplication-TileImage">
<meta content="#3c8dbc" name="theme-color">
</head>
<body>
<div id="q-app"></div>
</body>
</html>

View File

@ -21,24 +21,24 @@
<template>
<q-layout view="hHh lpR fFf">
<q-header elevated class="bg-primary text-white">
<q-header class="bg-primary text-white" elevated>
<q-toolbar>
<q-btn dense flat round icon="fas fa-bars" @click="toggleLeftDrawer"/>
<q-btn dense flat icon="fas fa-bars" round @click="toggleLeftDrawer"/>
<q-toolbar-title>
<q-avatar>
<img src="maskable-icon.svg" alt="Firefly III Logo" title="Firefly III">
<img alt="Firefly III Logo" src="maskable-icon.svg" title="Firefly III">
</q-avatar>
Firefly III
</q-toolbar-title>
<q-select
ref="search" dark dense standout use-input hide-selected
class="q-mx-xs"
color="black" :stack-label="false" label="Search"
v-model="search"
ref="search" v-model="search" :stack-label="false" class="q-mx-xs" color="black" dark
dense
hide-selected label="Search" standout
style="width: 250px"
use-input
>
<template v-slot:append>
@ -47,8 +47,8 @@
<template v-slot:option="scope">
<q-item
v-bind="scope.itemProps"
class=""
v-bind="scope.itemProps"
>
<q-item-section side>
<q-icon name="collections_bookmark"/>
@ -56,8 +56,8 @@
<q-item-section>
<q-item-label v-html="scope.opt.label"/>
</q-item-section>
<q-item-section side class="default-type">
<q-btn outline dense no-caps text-color="blue-grey-5" size="12px" class="bg-grey-1 q-px-sm">
<q-item-section class="default-type" side>
<q-btn class="bg-grey-1 q-px-sm" dense no-caps outline size="12px" text-color="blue-grey-5">
{{ 'Jump to' }}
<q-icon name="subdirectory_arrow_left" size="14px"/>
</q-btn>
@ -66,49 +66,49 @@
</template>
</q-select>
<q-separator dark vertical inset/>
<q-btn flat icon="fas fa-skull-crossbones" :to="{name: 'development.index'}" class="q-mx-xs"/>
<q-separator dark vertical inset/>
<q-btn flat icon="fas fa-question-circle" @click="showHelpBox" class="q-mx-xs"/>
<q-separator dark vertical inset/>
<q-separator dark inset vertical/>
<q-btn :to="{name: 'development.index'}" class="q-mx-xs" flat icon="fas fa-skull-crossbones"/>
<q-separator dark inset vertical/>
<q-btn class="q-mx-xs" flat icon="fas fa-question-circle" @click="showHelpBox"/>
<q-separator dark inset vertical/>
<!-- TODO notifications -->
<!-- date range -->
<q-btn v-if="$q.screen.gt.xs && $route.meta.dateSelector" flat class="q-mx-xs">
<q-btn v-if="$q.screen.gt.xs && $route.meta.dateSelector" class="q-mx-xs" flat>
<div class="row items-center no-wrap">
<q-icon name="fas fa-calendar" size="20px"/>
<q-icon name="fas fa-caret-down" size="12px" right/>
<q-icon name="fas fa-caret-down" right size="12px"/>
</div>
<q-menu>
<DateRange></DateRange>
</q-menu>
</q-btn>
<q-separator dark vertical inset v-if="$route.meta.dateSelector"/>
<q-separator v-if="$route.meta.dateSelector" dark inset vertical/>
<!-- specials -->
<q-btn v-if="$q.screen.gt.xs" flat class="q-mx-xs">
<q-btn v-if="$q.screen.gt.xs" class="q-mx-xs" flat>
<div class="row items-center no-wrap">
<q-icon name="fas fa-dragon" size="20px"/>
<q-icon name="fas fa-caret-down" size="12px" right/>
<q-icon name="fas fa-caret-down" right size="12px"/>
</div>
<q-menu auto-close>
<q-list style="min-width: 120px">
<q-item clickable :to="{ name: 'webhooks.index' }">
<q-item :to="{ name: 'webhooks.index' }" clickable>
<q-item-section>Webhooks</q-item-section>
</q-item>
<q-item clickable :to="{ name: 'currencies.index' }">
<q-item :to="{ name: 'currencies.index' }" clickable>
<q-item-section>Currencies</q-item-section>
</q-item>
<q-item clickable :to="{ name: 'admin.index' }">
<q-item :to="{ name: 'admin.index' }" clickable>
<q-item-section>Administration</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
<q-separator dark vertical inset/>
<q-separator dark inset vertical/>
<!-- profile -->
<q-btn v-if="$q.screen.gt.xs" flat class="q-mx-xs">
<q-btn v-if="$q.screen.gt.xs" class="q-mx-xs" flat>
<div class="row items-center no-wrap">
<q-icon name="fas fa-user-circle" size="20px"/>
<q-icon name="fas fa-caret-down" right size="12px"/>
@ -116,20 +116,20 @@
<q-menu auto-close>
<q-list style="min-width: 180px">
<q-item clickable :to="{ name: 'profile.index' }">
<q-item :to="{ name: 'profile.index' }" clickable>
<q-item-section> Profile</q-item-section>
</q-item>
<q-item clickable :to="{ name: 'profile.daa' }">
<q-item :to="{ name: 'profile.daa' }" clickable>
<q-item-section> Data management</q-item-section>
</q-item>
<q-item clickable :to="{ name: 'preferences.index' }">
<q-item :to="{ name: 'preferences.index' }" clickable>
<q-item-section>Preferences</q-item-section>
</q-item>
<q-item clickable :to="{ name: 'export.index' }">
<q-item :to="{ name: 'export.index' }" clickable>
<q-item-section>Export data</q-item-section>
</q-item>
<q-separator/>
<q-item clickable :to="{ name: 'logout' }">
<q-item :to="{ name: 'logout' }" clickable>
<q-item-section>Logout</q-item-section>
</q-item>
</q-list>
@ -137,11 +137,11 @@
</q-btn>
</q-toolbar>
</q-header>
<q-drawer show-if-above v-model="leftDrawerOpen" side="left" bordered>
<q-drawer v-model="leftDrawerOpen" bordered show-if-above side="left">
<q-scroll-area class="fit">
<div class="q-pa-md">
<q-list>
<q-item clickable v-ripple :to="{ name: 'index' }">
<q-item v-ripple :to="{ name: 'index' }" clickable>
<q-item-section avatar>
<q-icon name="fas fa-tachometer-alt"/>
</q-item-section>
@ -149,7 +149,7 @@
Dashboard
</q-item-section>
</q-item>
<q-item clickable v-ripple :to="{ name: 'budgets.index' }">
<q-item v-ripple :to="{ name: 'budgets.index' }" clickable>
<q-item-section avatar>
<q-icon name="fas fa-chart-pie"/>
</q-item-section>
@ -157,7 +157,7 @@
Budgets
</q-item-section>
</q-item>
<q-item clickable v-ripple :to="{ name: 'subscriptions.index' }">
<q-item v-ripple :to="{ name: 'subscriptions.index' }" clickable>
<q-item-section avatar>
<q-icon name="far fa-calendar-alt"/>
</q-item-section>
@ -165,7 +165,7 @@
Subscriptions
</q-item-section>
</q-item>
<q-item clickable v-ripple :to="{ name: 'piggy-banks.index' }">
<q-item v-ripple :to="{ name: 'piggy-banks.index' }" clickable>
<q-item-section avatar>
<q-icon name="fas fa-piggy-bank"/>
</q-item-section>
@ -175,22 +175,25 @@
</q-item>
<q-expansion-item
:default-opened="this.$route.name === 'transactions.index' || this.$route.name === 'transactions.show'"
expand-separator
icon="fas fa-exchange-alt"
label="Transactions"
:default-opened="this.$route.name === 'transactions.index' || this.$route.name === 'transactions.show'"
>
<q-item :inset-level="1" clickable v-ripple :to="{ name: 'transactions.index', params: {type: 'withdrawal'} }">
<q-item v-ripple :inset-level="1" :to="{ name: 'transactions.index', params: {type: 'withdrawal'} }"
clickable>
<q-item-section>
Withdrawals
</q-item-section>
</q-item>
<q-item clickable v-ripple :inset-level="1" :to="{ name: 'transactions.index', params: {type: 'deposit'} }">
<q-item v-ripple :inset-level="1" :to="{ name: 'transactions.index', params: {type: 'deposit'} }"
clickable>
<q-item-section>
Deposits
</q-item-section>
</q-item>
<q-item clickable v-ripple :inset-level="1" :to="{ name: 'transactions.index', params: {type: 'transfers'} }">
<q-item v-ripple :inset-level="1" :to="{ name: 'transactions.index', params: {type: 'transfers'} }"
clickable>
<q-item-section>
Transfers
@ -202,17 +205,17 @@
<q-expansion-item
default-unopened
expand-separator
icon="fas fa-microchip"
label="Automation"
default-unopened
>
<q-item :inset-level="1" clickable v-ripple :to="{ name: 'rules.index' }">
<q-item v-ripple :inset-level="1" :to="{ name: 'rules.index' }" clickable>
<q-item-section>
Rules
</q-item-section>
</q-item>
<q-item :inset-level="1" clickable v-ripple :to="{ name: 'recurring.index' }">
<q-item v-ripple :inset-level="1" :to="{ name: 'recurring.index' }" clickable>
<q-item-section>
Recurring transactions
</q-item-section>
@ -221,27 +224,28 @@
</q-expansion-item>
<q-expansion-item
:default-opened="this.$route.name === 'accounts.index' || this.$route.name === 'accounts.show'"
expand-separator
icon="fas fa-credit-card"
label="Accounts"
:default-opened="this.$route.name === 'accounts.index' || this.$route.name === 'accounts.show'"
>
<q-item clickable v-ripple :inset-level="1" :to="{ name: 'accounts.index', params: {type: 'asset'} }">
<q-item v-ripple :inset-level="1" :to="{ name: 'accounts.index', params: {type: 'asset'} }" clickable>
<q-item-section>
Asset accounts
</q-item-section>
</q-item>
<q-item clickable v-ripple :inset-level="1" :to="{ name: 'accounts.index', params: {type: 'expense'} }">
<q-item v-ripple :inset-level="1" :to="{ name: 'accounts.index', params: {type: 'expense'} }" clickable>
<q-item-section>
Expense accounts
</q-item-section>
</q-item>
<q-item clickable v-ripple :inset-level="1" :to="{ name: 'accounts.index', params: {type: 'revenue'} }">
<q-item v-ripple :inset-level="1" :to="{ name: 'accounts.index', params: {type: 'revenue'} }" clickable>
<q-item-section>
Revenue accounts
</q-item-section>
</q-item>
<q-item clickable v-ripple :inset-level="1" :to="{ name: 'accounts.index', params: {type: 'liabilities'} }">
<q-item v-ripple :inset-level="1" :to="{ name: 'accounts.index', params: {type: 'liabilities'} }"
clickable>
<q-item-section>
Liabilities
</q-item-section>
@ -250,28 +254,28 @@
</q-expansion-item>
<q-expansion-item
default-unopened
expand-separator
icon="fas fa-tags"
label="Classification"
default-unopened
>
<q-item clickable v-ripple :inset-level="1" :to="{ name: 'categories.index' }">
<q-item v-ripple :inset-level="1" :to="{ name: 'categories.index' }" clickable>
<q-item-section>
Categories
</q-item-section>
</q-item>
<q-item clickable v-ripple :inset-level="1" :to="{ name: 'tags.index' }">
<q-item v-ripple :inset-level="1" :to="{ name: 'tags.index' }" clickable>
<q-item-section>
Tags
</q-item-section>
</q-item>
<q-item clickable v-ripple :inset-level="1" :to="{ name: 'groups.index'}">
<q-item v-ripple :inset-level="1" :to="{ name: 'groups.index'}" clickable>
<q-item-section>
Groups
</q-item-section>
</q-item>
</q-expansion-item>
<q-item clickable v-ripple :to="{ name: 'reports.index'}">
<q-item v-ripple :to="{ name: 'reports.index'}" clickable>
<q-item-section avatar>
<q-icon name="far fa-chart-bar"/>
</q-item-section>
@ -296,7 +300,7 @@
</div>
<div class="col-6">
<q-breadcrumbs align="right">
<q-breadcrumbs-el label="Home" :to="{ name: 'index' }"/>
<q-breadcrumbs-el :to="{ name: 'index' }" label="Home"/>
<q-breadcrumbs-el v-for="step in $route.meta.breadcrumbs" :label="$t('breadcrumbs.' + step.title)"
:to="step.route ? {name: step.route, params: step.params} : ''"/>
</q-breadcrumbs>
@ -307,7 +311,7 @@
<router-view/>
</q-page-container>
<q-footer elevated class="bg-grey-8 text-white">
<q-footer class="bg-grey-8 text-white" elevated>
<q-toolbar>
<div>
<small>Firefly III v TODO &copy; James Cole, AGPL-3.0-or-later.</small>

View File

@ -32,18 +32,18 @@
<q-btn
class="q-mt-xl"
color="white"
text-color="blue"
unelevated
to="/"
label="Go Home"
no-caps
text-color="blue"
to="/"
unelevated
/>
</div>
</div>
</template>
<script>
import { defineComponent } from 'vue'
import {defineComponent} from 'vue'
export default defineComponent({
name: 'Error404'

View File

@ -22,10 +22,10 @@
<q-page>
<div class="row q-mx-md">
<div class="col-12">
<q-banner inline-actions rounded class="bg-orange text-white" v-if="'' !== errorMessage">
<q-banner v-if="'' !== errorMessage" class="bg-orange text-white" inline-actions rounded>
{{ errorMessage }}
<template v-slot:action>
<q-btn flat @click="dismissBanner" label="Dismiss"/>
<q-btn flat label="Dismiss" @click="dismissBanner"/>
</template>
</q-banner>
</div>
@ -40,22 +40,22 @@
<div class="row">
<div class="col-12 q-mb-xs">
<q-input
:error-message="submissionErrors.name"
:error="hasSubmissionErrors.name"
bottom-slots
v-model="name"
:disable="disabledInput"
type="text" clearable v-model="name" :label="$t('form.name')"
outlined/>
:error="hasSubmissionErrors.name"
:error-message="submissionErrors.name"
:label="$t('form.name')" bottom-slots clearable outlined
type="text"/>
</div>
</div>
<div class="row">
<div class="col-12 q-mb-xs">
<q-input
:error-message="submissionErrors.iban"
v-model="iban"
:disable="disabledInput"
:error="hasSubmissionErrors.iban"
mask="AA## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX"
bottom-slots :disable="disabledInput" type="text" clearable v-model="iban" :label="$t('form.iban')"
outlined/>
:error-message="submissionErrors.iban" :label="$t('form.iban')" bottom-slots clearable mask="AA## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX" outlined
type="text"/>
</div>
</div>
</q-card-section>
@ -74,9 +74,11 @@
</div>
<div class="row">
<div class="col-12 text-right">
<q-checkbox :disable="disabledInput" v-model="doReturnHere" left-label label="Return here to create another one"/>
<q-checkbox v-model="doReturnHere" :disable="disabledInput" label="Return here to create another one"
left-label/>
<br/>
<q-checkbox v-model="doResetForm" left-label :disable="!doReturnHere || disabledInput" label="Reset form after submission"/>
<q-checkbox v-model="doResetForm" :disable="!doReturnHere || disabledInput" label="Reset form after submission"
left-label/>
</div>
</div>
</q-card-section>

View File

@ -22,10 +22,10 @@
<q-page>
<div class="row q-mx-md">
<div class="col-12">
<q-banner inline-actions rounded class="bg-orange text-white" v-if="'' !== errorMessage">
<q-banner v-if="'' !== errorMessage" class="bg-orange text-white" inline-actions rounded>
{{ errorMessage }}
<template v-slot:action>
<q-btn flat @click="dismissBanner" label="Dismiss"/>
<q-btn flat label="Dismiss" @click="dismissBanner"/>
</template>
</q-banner>
</div>
@ -40,20 +40,20 @@
<div class="row">
<div class="col-12 q-mb-xs">
<q-input
:error-message="submissionErrors.name"
:error="hasSubmissionErrors.name"
bottom-slots :disable="disabledInput" type="text" clearable v-model="name" :label="$t('form.name')"
outlined/>
v-model="name"
:disable="disabledInput"
:error="hasSubmissionErrors.name" :error-message="submissionErrors.name" :label="$t('form.name')" bottom-slots clearable outlined
type="text"/>
</div>
</div>
<div class="row">
<div class="col-12 q-mb-xs">
<q-input
:error-message="submissionErrors.iban"
v-model="iban"
:disable="disabledInput"
:error="hasSubmissionErrors.iban"
mask="AA## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX"
bottom-slots :disable="disabledInput" type="text" clearable v-model="iban" :label="$t('form.iban')"
outlined/>
:error-message="submissionErrors.iban" :label="$t('form.iban')" bottom-slots clearable mask="AA## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX" outlined
type="text"/>
</div>
</div>
</q-card-section>
@ -72,7 +72,7 @@
</div>
<div class="row">
<div class="col-12 text-right">
<q-checkbox :disable="disabledInput" v-model="doReturnHere" left-label label="Return here"/>
<q-checkbox v-model="doReturnHere" :disable="disabledInput" label="Return here" left-label/>
</div>
</div>
</q-card-section>
@ -117,11 +117,11 @@ export default {
this.collectAccount();
},
methods: {
collectAccount: function() {
collectAccount: function () {
let get = new Get;
get.get(this.id).then((response) => this.parseAccount(response));
},
parseAccount: function(response) {
parseAccount: function (response) {
this.name = response.data.data.attributes.name;
this.iban = response.data.data.attributes.iban;
},

View File

@ -21,14 +21,14 @@
<template>
<q-page>
<q-table
:title="$t('firefly.' + this.type + '_accounts')"
:rows="rows"
:columns="columns"
row-key="id"
:dense="$q.screen.lt.md"
v-model:pagination="pagination"
:columns="columns"
:dense="$q.screen.lt.md"
:loading="loading"
:rows="rows"
:title="$t('firefly.' + this.type + '_accounts')"
class="q-ma-md"
row-key="id"
>
<template v-slot:header="props">
<q-tr :props="props">
@ -47,14 +47,14 @@
<router-link :to="{ name: 'accounts.show', params: {id: props.row.id} }" class="text-primary">
{{ props.row.name }}
</router-link>
<q-popup-edit v-model="props.row.name" v-slot="scope">
<q-input v-model="scope.value" dense autofocus counter />
<q-popup-edit v-slot="scope" v-model="props.row.name">
<q-input v-model="scope.value" autofocus counter dense/>
</q-popup-edit>
</q-td>
<q-td key="iban" :props="props">
{{ formatIban(props.row.iban) }}
<q-popup-edit v-model="props.row.iban" v-slot="scope">
<q-input v-model="scope.value" dense autofocus counter />
<q-popup-edit v-slot="scope" v-model="props.row.iban">
<q-input v-model="scope.value" autofocus counter dense/>
</q-popup-edit>
</q-td>
<q-td key="current_balance" :props="props">
@ -67,19 +67,20 @@
C
</q-td>
<q-td key="menu" :props="props">
<q-btn-dropdown color="primary" :label="$t('firefly.actions')" size="sm">
<q-btn-dropdown :label="$t('firefly.actions')" color="primary" size="sm">
<q-list>
<q-item clickable v-close-popup :to="{name: 'accounts.edit', params: {id: props.row.id}}">
<q-item v-close-popup :to="{name: 'accounts.edit', params: {id: props.row.id}}" clickable>
<q-item-section>
<q-item-label>{{ $t('firefly.edit') }}</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup :to="{name: 'accounts.reconcile', params: {id: props.row.id}}" v-if="'asset' === props.row.type">
<q-item v-if="'asset' === props.row.type" v-close-popup :to="{name: 'accounts.reconcile', params: {id: props.row.id}}"
clickable>
<q-item-section>
<q-item-label>{{ $t('firefly.reconcile') }}</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="deleteAccount(props.row.id, props.row.name)">
<q-item v-close-popup clickable @click="deleteAccount(props.row.id, props.row.name)">
<q-item-section>
<q-item-label>{{ $t('firefly.delete') }}</q-item-label>
</q-item-section>
@ -90,19 +91,20 @@
</q-tr>
</template>
</q-table>
<q-page-sticky position="bottom-right" :offset="[18, 18]">
<q-page-sticky :offset="[18, 18]" position="bottom-right">
<q-fab
:label="$t('firefly.actions')"
color="green"
direction="up"
icon="fas fa-chevron-up"
label-position="left"
square
vertical-actions-align="right"
label-position="left"
color="green"
icon="fas fa-chevron-up"
direction="up"
>
<!-- TODO -->
<!--<q-fab-action color="primary" square :to="{ name: 'accounts.create', params: {type: 'liability'} }" icon="fas fa-long-arrow-alt-right" label="New liability"/>-->
<q-fab-action color="primary" square :to="{ name: 'accounts.create', params: {type: 'asset'} }" icon="fas fa-exchange-alt" :label="$t('firefly.create_new_asset')"/>
<q-fab-action :label="$t('firefly.create_new_asset')" :to="{ name: 'accounts.create', params: {type: 'asset'} }" color="primary"
icon="fas fa-exchange-alt" square/>
</q-fab>
</q-page-sticky>
</q-page>
@ -161,7 +163,6 @@ export default {
this.type = this.$route.params.type;
if (null === this.store.getRange.start || null === this.store.getRange.end) {
// subscribe, then update:
this.store.$onAction(
@ -193,7 +194,7 @@ export default {
},
destroyAccount: function (id) {
(new Destroy('accounts')).destroy(id).then(() => {
this.rows= [];
this.rows = [];
this.store.refreshCacheKey().then(() => {
this.triggerUpdate();
});
@ -218,7 +219,7 @@ export default {
return string.replace(NON_ALPHANUM, '').toUpperCase().replace(EVERY_FOUR_CHARS, "$1 ");
},
triggerUpdate: function () {
this.rows= [];
this.rows = [];
if (true === this.loading) {
return;
}

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