mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-30 10:33:30 +00:00
Rebuild FP
This commit is contained in:
99
app/Api/V1/Controllers/Preferences/IndexController.php
Normal file
99
app/Api/V1/Controllers/Preferences/IndexController.php
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* IndexController.php
|
||||||
|
* Copyright (c) 2020 james@firefly-iii.org
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace FireflyIII\Api\V1\Controllers\Preferences;
|
||||||
|
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
|
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||||
|
use FireflyIII\Support\Facades\Navigation;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class IndexController
|
||||||
|
*/
|
||||||
|
class IndexController extends Controller
|
||||||
|
{
|
||||||
|
public const DATE_FORMAT = 'Y-m-d';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return users preferred date range settings, the current period
|
||||||
|
* and some previous / next periods.
|
||||||
|
*
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function dateRanges(): JsonResponse
|
||||||
|
{
|
||||||
|
$range = app('preferences')->get('viewRange', '1M')->data;
|
||||||
|
$return = [
|
||||||
|
'range' => $range,
|
||||||
|
'ranges' => [],
|
||||||
|
'default' => null,
|
||||||
|
];
|
||||||
|
$today = Carbon::today(config('app.timezone'));
|
||||||
|
$start = Navigation::startOfPeriod($today, $range);
|
||||||
|
$todayStr = $today->format(self::DATE_FORMAT);
|
||||||
|
// optional date ranges. Maybe to be configured later
|
||||||
|
// current $period
|
||||||
|
$title = (string)Navigation::periodShow($start, $range);
|
||||||
|
$return['default'] = $title;
|
||||||
|
$return['ranges'][$title] = [$start->format(self::DATE_FORMAT),
|
||||||
|
Navigation::endOfPeriod($start, $range)->format(self::DATE_FORMAT)];
|
||||||
|
// previous $period
|
||||||
|
$previousStart = Navigation::subtractPeriod($start, $range);
|
||||||
|
$title = (string)Navigation::periodShow($previousStart, $range);
|
||||||
|
$return['ranges'][$title] = [$previousStart->format(self::DATE_FORMAT),
|
||||||
|
Navigation::endOfPeriod($previousStart, $range)->format(self::DATE_FORMAT)];
|
||||||
|
// next $period
|
||||||
|
$nextStart = Navigation::addPeriod($start, $range, 0);
|
||||||
|
$title = (string)Navigation::periodShow($nextStart, $range);
|
||||||
|
$return['ranges'][$title] = [$nextStart->format(self::DATE_FORMAT),
|
||||||
|
Navigation::endOfPeriod($nextStart, $range)->format(self::DATE_FORMAT)];
|
||||||
|
// --
|
||||||
|
// last seven days:
|
||||||
|
$seven = Carbon::today()->subDays(7);
|
||||||
|
$title = (string)trans('firefly.last_seven_days');
|
||||||
|
$return['ranges'][$title] = [$seven->format(self::DATE_FORMAT), $todayStr];
|
||||||
|
// last 30 days:
|
||||||
|
$thirty = Carbon::today()->subDays(30);
|
||||||
|
$title = (string)trans('firefly.last_thirty_days');
|
||||||
|
$return['ranges'][$title] = [$thirty->format(self::DATE_FORMAT), $todayStr];
|
||||||
|
// last 180 days
|
||||||
|
$long = Carbon::today()->subDays(180);
|
||||||
|
$title = (string)trans('firefly.last_180_days');
|
||||||
|
$return['ranges'][$title] = [$long->format(self::DATE_FORMAT), $todayStr];
|
||||||
|
// YTD
|
||||||
|
$YTD = Carbon::today()->startOfYear();
|
||||||
|
$title = (string)trans('firefly.YTD');
|
||||||
|
$return['ranges'][$title] = [$YTD->format(self::DATE_FORMAT), $todayStr];
|
||||||
|
// ---
|
||||||
|
// everything
|
||||||
|
$repository = app(JournalRepositoryInterface::class);
|
||||||
|
$journal = $repository->firstNull();
|
||||||
|
$first = null === $journal ? clone $YTD : clone $journal->date;
|
||||||
|
$title = (string)trans('firefly.everything');
|
||||||
|
$return['ranges'][$title] = [$first->format(self::DATE_FORMAT), $todayStr];
|
||||||
|
|
||||||
|
return response()->json($return);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -48,18 +48,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--
|
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
<div class="col-lg-6 col-md-12 col-sm-12 col-xs-12">
|
||||||
<main-piggy-list/>
|
<main-piggy-list/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
<div class="col-lg-6 col-md-12 col-sm-12 col-xs-12">
|
||||||
<main-bills-list/>
|
<main-bills-list/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
-->
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@@ -19,71 +19,78 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h3 class="card-title">{{ $t('firefly.bills') }}</h3>
|
<h3 class="card-title">{{ $t('firefly.bills') }}</h3>
|
||||||
</div>
|
|
||||||
<div class="card-body table-responsive p-0">
|
|
||||||
<table class="table table-striped">
|
|
||||||
<caption style="display:none;">{{ $t('firefly.bills') }}</caption>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th scope="col" style="width:35%;">{{ $t('list.name') }}</th>
|
|
||||||
<th scope="col" style="width:40%;">{{ $t('list.amount') }}</th>
|
|
||||||
<th scope="col" style="width:25%;">{{ $t('list.next_expected_match') }}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr v-for="bill in this.bills">
|
|
||||||
<td><a :href="'./bills/show' + bill.id" :title="bill.attributes.name">{{ bill.attributes.name }}</a></td>
|
|
||||||
<td>~{{ Intl.NumberFormat('en-US', {style: 'currency', currency: bill.attributes.currency_code}).format((bill.attributes.amount_min +
|
|
||||||
bill.attributes.amount_max) / 2) }}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span v-for="payDate in bill.attributes.pay_dates">
|
|
||||||
{{ payDate }}<br />
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="card-footer">
|
|
||||||
<a href="./bills" class="btn btn-default button-sm"><i class="far fa-money-bill-alt"></i> {{ $t('firefly.go_to_bills') }}</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="card-body table-responsive p-0">
|
||||||
|
<table class="table table-striped">
|
||||||
|
<caption style="display:none;">{{ $t('firefly.bills') }}</caption>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col" style="width:35%;">{{ $t('list.name') }}</th>
|
||||||
|
<th scope="col" style="width:40%;">{{ $t('list.amount') }}</th>
|
||||||
|
<th scope="col" style="width:25%;">{{ $t('list.next_expected_match') }}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr v-for="bill in this.bills">
|
||||||
|
<td><a :href="'./bills/show' + bill.id" :title="bill.attributes.name">{{ bill.attributes.name }}</a></td>
|
||||||
|
<td>~{{
|
||||||
|
Intl.NumberFormat(locale, {style: 'currency', currency: bill.attributes.currency_code}).format((parseFloat(bill.attributes.amount_min) +
|
||||||
|
parseFloat(bill.attributes.amount_max)) / 2)
|
||||||
|
}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span v-for="payDate in bill.attributes.pay_dates">
|
||||||
|
{{ new Intl.DateTimeFormat(locale, {year: 'numeric', month: 'long', day: 'numeric'}).format(new Date(payDate)) }}
|
||||||
|
<br />
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer">
|
||||||
|
<a href="./bills" class="btn btn-default button-sm"><i class="far fa-money-bill-alt"></i> {{ $t('firefly.go_to_bills') }}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "MainBillsList",
|
name: "MainBillsList",
|
||||||
created() {
|
computed: {
|
||||||
axios.get('./api/v1/bills?start=' + window.sessionStart + '&end=' + window.sessionEnd)
|
locale() {
|
||||||
.then(response => {
|
return this.$store.getters.locale;
|
||||||
this.loadBills(response.data.data);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
components: {},
|
|
||||||
methods: {
|
|
||||||
loadBills(data) {
|
|
||||||
for (let key in data) {
|
|
||||||
if (data.hasOwnProperty(key) && /^0$|^[1-9]\d*$/.test(key) && key <= 4294967294) {
|
|
||||||
|
|
||||||
let bill = data[key];
|
|
||||||
let active = bill.attributes.active;
|
|
||||||
if (bill.attributes.pay_dates.length > 0 && active) {
|
|
||||||
this.bills.push(bill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
bills: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {},
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
axios.get('./api/v1/bills?start=' + window.sessionStart + '&end=' + window.sessionEnd)
|
||||||
|
.then(response => {
|
||||||
|
this.loadBills(response.data.data);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
components: {},
|
||||||
|
methods: {
|
||||||
|
loadBills(data) {
|
||||||
|
for (let key in data) {
|
||||||
|
if (data.hasOwnProperty(key) && /^0$|^[1-9]\d*$/.test(key) && key <= 4294967294) {
|
||||||
|
|
||||||
|
let bill = data[key];
|
||||||
|
let active = bill.attributes.active;
|
||||||
|
if (bill.attributes.pay_dates.length > 0 && active) {
|
||||||
|
this.bills.push(bill);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
bills: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@@ -19,82 +19,94 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h3 class="card-title">{{ $t('firefly.piggy_banks') }}</h3>
|
<h3 class="card-title">{{ $t('firefly.piggy_banks') }}</h3>
|
||||||
</div>
|
|
||||||
<div class="card-body table-responsive p-0">
|
|
||||||
<table class="table table-striped">
|
|
||||||
<caption style="display:none;">{{ $t('firefly.piggy_banks') }}</caption>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th scope="col" style="width:35%;">{{ $t('list.piggy_bank') }}</th>
|
|
||||||
<th scope="col" style="width:40%;">{{ $t('list.percentage') }}</th>
|
|
||||||
<th scope="col" style="width:25%;text-align: right;">{{ $t('list.amount') }}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr v-for="piggy in this.piggy_banks">
|
|
||||||
<td>{{ piggy.attributes.name }}
|
|
||||||
<br /><small class="text-muted">{{ piggy.attributes.object_group_title }}</small>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<div class="progress-group">
|
|
||||||
<div class="progress progress-sm">
|
|
||||||
<div class="progress-bar primary" v-if="piggy.attributes.pct < 100" :style="{'width': piggy.attributes.pct + '%'}"></div>
|
|
||||||
<div class="progress-bar bg-success" v-if="100 === piggy.attributes.pct" :style="{'width': piggy.attributes.pct + '%'}"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<td style="text-align: right;">
|
|
||||||
<span class="text-success">
|
|
||||||
{{ Intl.NumberFormat('en-US', {style: 'currency', currency: piggy.attributes.currency_code}).format(piggy.attributes.current_amount) }}
|
|
||||||
</span>
|
|
||||||
of
|
|
||||||
<span class="text-success">{{ Intl.NumberFormat('en-US', {style: 'currency', currency: piggy.attributes.currency_code}).format(piggy.attributes.target_amount) }}</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="card-footer">
|
|
||||||
<a href="./piggy-banks" class="btn btn-default button-sm"><i class="far fa-money-bill-alt"></i> {{ $t('firefly.go_to_piggies') }}</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="card-body table-responsive p-0">
|
||||||
|
<table class="table table-striped">
|
||||||
|
<caption style="display:none;">{{ $t('firefly.piggy_banks') }}</caption>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col" style="width:35%;">{{ $t('list.piggy_bank') }}</th>
|
||||||
|
<th scope="col" style="width:40%;">{{ $t('list.percentage') }} <small>/ {{ $t('list.amount') }}</small></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr v-for="piggy in this.piggy_banks">
|
||||||
|
<td>{{ piggy.attributes.name }}
|
||||||
|
<small v-if="piggy.attributes.object_group_title" class="text-muted">
|
||||||
|
<br/>
|
||||||
|
{{ piggy.attributes.object_group_title }}
|
||||||
|
</small>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="progress-group">
|
||||||
|
<div class="progress progress-sm">
|
||||||
|
<div class="progress-bar progress-bar-striped primary" v-if="piggy.attributes.pct < 100" :style="{'width': piggy.attributes.pct + '%'}"></div>
|
||||||
|
<div class="progress-bar progress-bar-striped bg-success" v-if="100 === piggy.attributes.pct" :style="{'width': piggy.attributes.pct + '%'}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<span class="text-success">
|
||||||
|
{{
|
||||||
|
Intl.NumberFormat(locale, {style: 'currency', currency: piggy.attributes.currency_code}).format(piggy.attributes.current_amount)
|
||||||
|
}}
|
||||||
|
</span>
|
||||||
|
of
|
||||||
|
<span class="text-success">{{
|
||||||
|
Intl.NumberFormat(locale, {
|
||||||
|
style: 'currency',
|
||||||
|
currency: piggy.attributes.currency_code
|
||||||
|
}).format(piggy.attributes.target_amount)
|
||||||
|
}}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer">
|
||||||
|
<a href="./piggy-banks" class="btn btn-default button-sm"><i class="far fa-money-bill-alt"></i> {{ $t('firefly.go_to_piggies') }}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "MainPiggyList",
|
name: "MainPiggyList",
|
||||||
created() {
|
created() {
|
||||||
axios.get('./api/v1/piggy_banks')
|
axios.get('./api/v1/piggy_banks')
|
||||||
.then(response => {
|
.then(response => {
|
||||||
this.loadPiggyBanks(response.data.data);
|
this.loadPiggyBanks(response.data.data);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
methods: {
|
computed: {
|
||||||
loadPiggyBanks(data) {
|
locale() {
|
||||||
for (let key in data) {
|
return this.$store.getters.locale;
|
||||||
if (data.hasOwnProperty(key) && /^0$|^[1-9]\d*$/.test(key) && key <= 4294967294) {
|
|
||||||
let piggy = data[key];
|
|
||||||
if(0.0 !== parseFloat(piggy.attributes.left_to_save)) {
|
|
||||||
piggy.attributes.pct = (parseFloat(piggy.attributes.current_amount) / parseFloat(piggy.attributes.target_amount)) * 100;
|
|
||||||
this.piggy_banks.push(piggy);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.piggy_banks.sort(function(a, b) {
|
|
||||||
return b.attributes.pct - a.attributes.pct;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
piggy_banks: []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
loadPiggyBanks(data) {
|
||||||
|
for (let key in data) {
|
||||||
|
if (data.hasOwnProperty(key) && /^0$|^[1-9]\d*$/.test(key) && key <= 4294967294) {
|
||||||
|
let piggy = data[key];
|
||||||
|
if (0.0 !== parseFloat(piggy.attributes.left_to_save)) {
|
||||||
|
piggy.attributes.pct = (parseFloat(piggy.attributes.current_amount) / parseFloat(piggy.attributes.target_amount)) * 100;
|
||||||
|
this.piggy_banks.push(piggy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.piggy_banks.sort(function (a, b) {
|
||||||
|
return b.attributes.pct - a.attributes.pct;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
piggy_banks: []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
35
frontend/src/components/store/index.js
vendored
35
frontend/src/components/store/index.js
vendored
@@ -19,25 +19,38 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import Vuex from 'vuex'
|
import Vuex, {createLogger} from 'vuex'
|
||||||
|
|
||||||
Vue.use(Vuex)
|
Vue.use(Vuex)
|
||||||
|
|
||||||
|
|
||||||
export default new Vuex.Store(
|
export default new Vuex.Store(
|
||||||
{
|
{
|
||||||
modules: [],
|
modules: [],
|
||||||
strict: true,
|
strict: true,
|
||||||
plugins: [],
|
plugins: [createLogger()],
|
||||||
state: {
|
state: {
|
||||||
currencyPreference: {},
|
currencyPreference: {},
|
||||||
locale: 'en-US'
|
locale: 'en-US'
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
setCurrencyPreference(state, object) {
|
setCurrencyPreference(state, object) {
|
||||||
|
console.log('mutation: setCurrencyPreference');
|
||||||
state.currencyPreference = object;
|
state.currencyPreference = object;
|
||||||
},
|
},
|
||||||
initialiseStore(state) {
|
initialiseStore(state) {
|
||||||
console.log('initialiseStore');
|
console.log('mutation: initialiseStore');
|
||||||
|
// if locale in local storage:
|
||||||
|
if (localStorage.locale) {
|
||||||
|
state.locale = localStorage.locale;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// set locale from HTML:
|
||||||
|
let localeToken = document.head.querySelector('meta[name="locale"]');
|
||||||
|
if (localeToken) {
|
||||||
|
state.locale = localeToken.content;
|
||||||
|
localStorage.locale = localeToken.content;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getters: {
|
getters: {
|
||||||
@@ -46,19 +59,31 @@ export default new Vuex.Store(
|
|||||||
},
|
},
|
||||||
currencyId: state => {
|
currencyId: state => {
|
||||||
return state.currencyPreference.id;
|
return state.currencyPreference.id;
|
||||||
|
},
|
||||||
|
locale: state => {
|
||||||
|
return state.locale;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
updateCurrencyPreference(context) {
|
updateCurrencyPreference(context) {
|
||||||
|
console.log('action: updateCurrencyPreference');
|
||||||
|
if (localStorage.currencyPreference) {
|
||||||
|
console.log('action: from local storage');
|
||||||
|
context.commit('setCurrencyPreference', localStorage.currencyPreference);
|
||||||
|
return;
|
||||||
|
}
|
||||||
axios.get('./api/v1/currencies/default')
|
axios.get('./api/v1/currencies/default')
|
||||||
.then(response => {
|
.then(response => {
|
||||||
context.commit('setCurrencyPreference', {
|
console.log('action: from axios');
|
||||||
|
let currencyResponse = {
|
||||||
id: parseInt(response.data.data.id),
|
id: parseInt(response.data.data.id),
|
||||||
name: response.data.data.attributes.name,
|
name: response.data.data.attributes.name,
|
||||||
symbol: response.data.data.attributes.symbol,
|
symbol: response.data.data.attributes.symbol,
|
||||||
code: response.data.data.attributes.code,
|
code: response.data.data.attributes.code,
|
||||||
decimal_places: parseInt(response.data.data.attributes.decimal_places),
|
decimal_places: parseInt(response.data.data.attributes.decimal_places),
|
||||||
});
|
};
|
||||||
|
localStorage.currencyPreference = currencyResponse;
|
||||||
|
context.commit('setCurrencyPreference', currencyResponse);
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.log('Got error response.');
|
console.log('Got error response.');
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
1
frontend/src/pages/dashboard.js
vendored
1
frontend/src/pages/dashboard.js
vendored
@@ -76,6 +76,7 @@ new Vue({
|
|||||||
return createElement(Dashboard, {props: props});
|
return createElement(Dashboard, {props: props});
|
||||||
},
|
},
|
||||||
beforeCreate() {
|
beforeCreate() {
|
||||||
|
this.$store.commit('initialiseStore');
|
||||||
this.$store.dispatch('updateCurrencyPreference');
|
this.$store.dispatch('updateCurrencyPreference');
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
2
public/v2/js/accounts/index.js
vendored
2
public/v2/js/accounts/index.js
vendored
@@ -1,2 +1,2 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{227:function(t,s,a){t.exports=a(236)},236:function(t,s,a){"use strict";a.r(s);var e={name:"Index",props:{accountTypes:String},data:function(){return{accounts:[]}},created:function(){var t=this;console.log("mounted account list."),axios.get("./api/v1/accounts?type="+this.$props.accountTypes).then((function(s){t.loadAccounts(s.data.data)}))},methods:{loadAccounts:function(t){for(var s in t)if(t.hasOwnProperty(s)&&/^0$|^[1-9]\d*$/.test(s)&&s<=4294967294){var a=t[s];"asset"===a.attributes.type&&null!==a.attributes.account_role&&(a.attributes.account_role=this.$t("firefly.account_role_"+a.attributes.account_role)),"asset"===a.attributes.type&&null===a.attributes.account_role&&(a.attributes.account_role=this.$t("firefly.Default asset account")),null===a.attributes.iban&&(a.attributes.iban=a.attributes.account_number),this.accounts.push(a)}}}},c=a(1),n=Object(c.a)(e,(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"row"},[a("div",{staticClass:"col-lg-12 col-md-12 col-sm-12 col-xs-12"},[a("div",{staticClass:"card"},[t._m(0),t._v(" "),a("div",{staticClass:"card-body p-0"},[a("table",{staticClass:"table table-sm table-striped"},[a("caption",{staticStyle:{display:"none"}},[t._v(t._s(t.$t("list.name")))]),t._v(" "),a("thead",[a("tr",[a("th",{attrs:{scope:"col"}},[t._v(" ")]),t._v(" "),a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.name")))]),t._v(" "),"asset"===t.$props.accountTypes?a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.role")))]):t._e(),t._v(" "),a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.iban")))]),t._v(" "),a("th",{staticStyle:{"text-align":"right"},attrs:{scope:"col"}},[t._v(t._s(t.$t("list.currentBalance")))]),t._v(" "),a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.balanceDiff")))])])]),t._v(" "),a("tbody",t._l(t.accounts,(function(s){return a("tr",[a("td",[a("div",{staticClass:"btn-group btn-group-xs"},[a("a",{staticClass:"btn btn-xs btn-default",attrs:{href:"./accounts/edit/"+s.id}},[a("i",{staticClass:"fa fas fa-pencil-alt"})]),t._v(" "),a("a",{staticClass:"btn btn-xs btn-danger",attrs:{href:"./accounts/delete/"+s.id}},[a("i",{staticClass:"fa far fa-trash"})])])]),t._v(" "),a("td",[t._v(t._s(s.attributes.name)+"\n ")]),t._v(" "),"asset"===t.$props.accountTypes?a("td",[t._v("\n "+t._s(s.attributes.account_role)+"\n ")]):t._e(),t._v(" "),a("td",[t._v("\n "+t._s(s.attributes.iban)+"\n ")]),t._v(" "),a("td",{staticStyle:{"text-align":"right"}},[t._v("\n "+t._s(Intl.NumberFormat("en-US",{style:"currency",currency:s.attributes.currency_code}).format(s.attributes.current_balance))+"\n ")]),t._v(" "),a("td",[t._v("diff")])])})),0)])]),t._v(" "),a("div",{staticClass:"card-footer"},[t._v("\n Footer stuff.\n ")])])])])}),[function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"card-header"},[s("h3",{staticClass:"card-title"},[this._v("Title thing")]),this._v(" "),s("div",{staticClass:"card-tools"},[s("div",{staticClass:"input-group input-group-sm",staticStyle:{width:"150px"}},[s("input",{staticClass:"form-control float-right",attrs:{type:"text",name:"table_search",placeholder:"Search"}}),this._v(" "),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"btn btn-default",attrs:{type:"submit"}},[s("i",{staticClass:"fas fa-search"})])])])])])}],!1,null,"0bf47abd",null).exports;a(7);var i=a(9),r={};new Vue({i18n:i,render:function(t){return t(n,{props:r})}}).$mount("#accounts")}},[[227,0,1]]]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{227:function(t,s,a){t.exports=a(236)},236:function(t,s,a){"use strict";a.r(s);var e={name:"Index",props:{accountTypes:String},data:function(){return{accounts:[]}},created:function(){var t=this;console.log("mounted account list."),axios.get("./api/v1/accounts?type="+this.$props.accountTypes).then((function(s){t.loadAccounts(s.data.data)}))},methods:{loadAccounts:function(t){for(var s in t)if(t.hasOwnProperty(s)&&/^0$|^[1-9]\d*$/.test(s)&&s<=4294967294){var a=t[s];"asset"===a.attributes.type&&null!==a.attributes.account_role&&(a.attributes.account_role=this.$t("firefly.account_role_"+a.attributes.account_role)),"asset"===a.attributes.type&&null===a.attributes.account_role&&(a.attributes.account_role=this.$t("firefly.Default asset account")),null===a.attributes.iban&&(a.attributes.iban=a.attributes.account_number),this.accounts.push(a)}}}},c=a(1),n=Object(c.a)(e,(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"row"},[a("div",{staticClass:"col-lg-12 col-md-12 col-sm-12 col-xs-12"},[a("div",{staticClass:"card"},[t._m(0),t._v(" "),a("div",{staticClass:"card-body p-0"},[a("table",{staticClass:"table table-sm table-striped"},[a("caption",{staticStyle:{display:"none"}},[t._v(t._s(t.$t("list.name")))]),t._v(" "),a("thead",[a("tr",[a("th",{attrs:{scope:"col"}},[t._v(" ")]),t._v(" "),a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.name")))]),t._v(" "),"asset"===t.$props.accountTypes?a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.role")))]):t._e(),t._v(" "),a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.iban")))]),t._v(" "),a("th",{staticStyle:{"text-align":"right"},attrs:{scope:"col"}},[t._v(t._s(t.$t("list.currentBalance")))]),t._v(" "),a("th",{attrs:{scope:"col"}},[t._v(t._s(t.$t("list.balanceDiff")))])])]),t._v(" "),a("tbody",t._l(t.accounts,(function(s){return a("tr",[a("td",[a("div",{staticClass:"btn-group btn-group-xs"},[a("a",{staticClass:"btn btn-xs btn-default",attrs:{href:"./accounts/edit/"+s.id}},[a("i",{staticClass:"fa fas fa-pencil-alt"})]),t._v(" "),a("a",{staticClass:"btn btn-xs btn-danger",attrs:{href:"./accounts/delete/"+s.id}},[a("i",{staticClass:"fa far fa-trash"})])])]),t._v(" "),a("td",[t._v(t._s(s.attributes.name)+"\n ")]),t._v(" "),"asset"===t.$props.accountTypes?a("td",[t._v("\n "+t._s(s.attributes.account_role)+"\n ")]):t._e(),t._v(" "),a("td",[t._v("\n "+t._s(s.attributes.iban)+"\n ")]),t._v(" "),a("td",{staticStyle:{"text-align":"right"}},[t._v("\n "+t._s(Intl.NumberFormat("en-US",{style:"currency",currency:s.attributes.currency_code}).format(s.attributes.current_balance))+"\n ")]),t._v(" "),a("td",[t._v("diff")])])})),0)])]),t._v(" "),a("div",{staticClass:"card-footer"},[t._v("\n Footer stuff.\n ")])])])])}),[function(){var t=this.$createElement,s=this._self._c||t;return s("div",{staticClass:"card-header"},[s("h3",{staticClass:"card-title"},[this._v("Title thing")]),this._v(" "),s("div",{staticClass:"card-tools"},[s("div",{staticClass:"input-group input-group-sm",staticStyle:{width:"150px"}},[s("input",{staticClass:"form-control float-right",attrs:{type:"text",name:"table_search",placeholder:"Search"}}),this._v(" "),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"btn btn-default",attrs:{type:"submit"}},[s("i",{staticClass:"fas fa-search"})])])])])])}],!1,null,"0bf47abd",null).exports;a(7);var i=a(10),r={};new Vue({i18n:i,render:function(t){return t(n,{props:r})}}).$mount("#accounts")}},[[227,0,1]]]);
|
||||||
//# sourceMappingURL=index.js.map
|
//# sourceMappingURL=index.js.map
|
File diff suppressed because one or more lines are too long
2
public/v2/js/accounts/show.js
vendored
2
public/v2/js/accounts/show.js
vendored
@@ -1,2 +1,2 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{228:function(n,e,t){n.exports=t(237)},237:function(n,e,t){"use strict";t.r(e);var o={name:"Show"},r=t(1),s=Object(r.a)(o,(function(){var n=this.$createElement;return(this._self._c||n)("div",[this._v("\n I am a show\n")])}),[],!1,null,"dcd61a50",null).exports;t(7);var c=t(9),u={};new Vue({i18n:c,render:function(n){return n(s,{props:u})}}).$mount("#accounts_show")}},[[228,0,1]]]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{228:function(n,e,t){n.exports=t(237)},237:function(n,e,t){"use strict";t.r(e);var o={name:"Show"},r=t(1),s=Object(r.a)(o,(function(){var n=this.$createElement;return(this._self._c||n)("div",[this._v("\n I am a show\n")])}),[],!1,null,"dcd61a50",null).exports;t(7);var c=t(10),u={};new Vue({i18n:c,render:function(n){return n(s,{props:u})}}).$mount("#accounts_show")}},[[228,0,1]]]);
|
||||||
//# sourceMappingURL=show.js.map
|
//# sourceMappingURL=show.js.map
|
@@ -1 +1 @@
|
|||||||
{"version":3,"sources":["webpack:///./src/components/accounts/Show.vue?b4b4","webpack:///./src/components/accounts/Show.vue?4c02","webpack:///src/components/accounts/Show.vue","webpack:///./src/components/accounts/Show.vue","webpack:///./src/pages/accounts/show.js"],"names":["_h","this","$createElement","_self","_c","_v","require","i18n","props","Vue","render","createElement","Show","$mount"],"mappings":"uIAAA,ICAoM,EC2BpM,CACE,KAAF,Q,OCVe,EAXC,YACd,GHRW,WAAa,IAAiBA,EAATC,KAAgBC,eAAuC,OAAvDD,KAA0CE,MAAMC,IAAIJ,GAAa,MAAM,CAAvEC,KAA4EI,GAAG,2BAC3F,IGUpB,EACA,KACA,WACA,M,QCOFC,EAAQ,GAKR,IAAIC,EAAOD,EAAQ,GAKfE,EAAQ,GAGZ,IAAIC,IAAI,CACIF,OACAG,OAFJ,SAEWC,GACH,OAAOA,EAAcC,EAAM,CAACJ,MAAOA,OAExCK,OAAO,oB","file":"/public/js/accounts/show.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._v(\"\\n I am a show\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Show.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Show.vue?vue&type=script&lang=js&\"","<!--\n - Show.vue\n - Copyright (c) 2020 james@firefly-iii.org\n -\n - This file is part of Firefly III (https://github.com/firefly-iii).\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <https://www.gnu.org/licenses/>.\n -->\n\n<template>\n <div>\n I am a show\n </div>\n</template>\n\n<script>\n export default {\n name: \"Show\"\n }\n</script>\n\n<style scoped>\n\n</style>\n","import { render, staticRenderFns } from \"./Show.vue?vue&type=template&id=dcd61a50&scoped=true&\"\nimport script from \"./Show.vue?vue&type=script&lang=js&\"\nexport * from \"./Show.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dcd61a50\",\n null\n \n)\n\nexport default component.exports","/*\n * index.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <https://www.gnu.org/licenses/>.\n */\n\n\nrequire('../../bootstrap');\n\nimport Show from \"../../components/accounts/Show\";\n\n// i18n\nlet i18n = require('../../i18n');\n\n// get page name?\n\n\nlet props = {\n\n};\nnew Vue({\n i18n,\n render(createElement) {\n return createElement(Show, {props: props});\n }\n }).$mount('#accounts_show');\n"],"sourceRoot":""}
|
{"version":3,"sources":["webpack:///./src/components/accounts/Show.vue?b4b4","webpack:///./src/components/accounts/Show.vue?4c02","webpack:///src/components/accounts/Show.vue","webpack:///./src/components/accounts/Show.vue","webpack:///./src/pages/accounts/show.js"],"names":["_h","this","$createElement","_self","_c","_v","require","i18n","props","Vue","render","createElement","Show","$mount"],"mappings":"uIAAA,ICAoM,EC2BpM,CACE,KAAF,Q,OCVe,EAXC,YACd,GHRW,WAAa,IAAiBA,EAATC,KAAgBC,eAAuC,OAAvDD,KAA0CE,MAAMC,IAAIJ,GAAa,MAAM,CAAvEC,KAA4EI,GAAG,2BAC3F,IGUpB,EACA,KACA,WACA,M,QCOFC,EAAQ,GAKR,IAAIC,EAAOD,EAAQ,IAKfE,EAAQ,GAGZ,IAAIC,IAAI,CACIF,OACAG,OAFJ,SAEWC,GACH,OAAOA,EAAcC,EAAM,CAACJ,MAAOA,OAExCK,OAAO,oB","file":"/public/js/accounts/show.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._v(\"\\n I am a show\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Show.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--4-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Show.vue?vue&type=script&lang=js&\"","<!--\n - Show.vue\n - Copyright (c) 2020 james@firefly-iii.org\n -\n - This file is part of Firefly III (https://github.com/firefly-iii).\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <https://www.gnu.org/licenses/>.\n -->\n\n<template>\n <div>\n I am a show\n </div>\n</template>\n\n<script>\n export default {\n name: \"Show\"\n }\n</script>\n\n<style scoped>\n\n</style>\n","import { render, staticRenderFns } from \"./Show.vue?vue&type=template&id=dcd61a50&scoped=true&\"\nimport script from \"./Show.vue?vue&type=script&lang=js&\"\nexport * from \"./Show.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dcd61a50\",\n null\n \n)\n\nexport default component.exports","/*\n * index.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <https://www.gnu.org/licenses/>.\n */\n\n\nrequire('../../bootstrap');\n\nimport Show from \"../../components/accounts/Show\";\n\n// i18n\nlet i18n = require('../../i18n');\n\n// get page name?\n\n\nlet props = {\n\n};\nnew Vue({\n i18n,\n render(createElement) {\n return createElement(Show, {props: props});\n }\n }).$mount('#accounts_show');\n"],"sourceRoot":""}
|
2
public/v2/js/dashboard.js
vendored
2
public/v2/js/dashboard.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/new-user/index.js
vendored
2
public/v2/js/new-user/index.js
vendored
@@ -1,2 +1,2 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{226:function(a,e,t){a.exports=t(235)},235:function(a,e,t){"use strict";t.r(e);var s={name:"Index"},n=t(1),i=Object(n.a)(s,(function(){var a=this.$createElement;this._self._c;return this._m(0)}),[function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("div",{staticClass:"row"},[t("div",{staticClass:"col"},[t("div",{attrs:{id:"accordion"}},[t("div",{staticClass:"card card-primary"},[t("div",{staticClass:"card-header"},[t("h4",{staticClass:"card-title"},[t("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseOne"}},[a._v("\n Create new accounts\n ")])])]),a._v(" "),t("div",{staticClass:"panel-collapse collapse show",attrs:{id:"collapseOne"}},[t("div",{staticClass:"card-body"},[t("div",{staticClass:"row"},[t("div",{staticClass:"col"},[t("p",[a._v("Explain")])])]),a._v(" "),t("div",{staticClass:"row"},[t("div",{staticClass:"col-lg-4"},[a._v("\n A\n ")]),a._v(" "),t("div",{staticClass:"col-lg-8"},[a._v("\n B\n ")])])])])]),a._v(" "),t("div",{staticClass:"card card-secondary"},[t("div",{staticClass:"card-header"},[t("h4",{staticClass:"card-title"},[t("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseTwo"}},[a._v("\n Collapsible Group Danger\n ")])])]),a._v(" "),t("div",{staticClass:"panel-collapse collapse",attrs:{id:"collapseTwo"}},[t("div",{staticClass:"card-body"},[a._v("\n Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid.\n 3\n wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt\n laborum\n eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee\n nulla\n assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred\n nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft\n beer\n farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus\n labore sustainable VHS.\n ")])])]),a._v(" "),t("div",{staticClass:"card card-secondary"},[t("div",{staticClass:"card-header"},[t("h4",{staticClass:"card-title"},[t("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseThree"}},[a._v("\n Collapsible Group Success\n ")])])]),a._v(" "),t("div",{staticClass:"panel-collapse collapse",attrs:{id:"collapseThree"}},[t("div",{staticClass:"card-body"},[a._v("\n Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid.\n 3\n wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt\n laborum\n eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee\n nulla\n assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred\n nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft\n beer\n farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus\n labore sustainable VHS.\n ")])])])])])])}],!1,null,"5c520d02",null).exports;t(7);var c=t(9),r={};new Vue({i18n:c,render:function(a){return a(i,{props:r})}}).$mount("#newuser")}},[[226,0,1]]]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{226:function(a,e,t){a.exports=t(235)},235:function(a,e,t){"use strict";t.r(e);var s={name:"Index"},n=t(1),i=Object(n.a)(s,(function(){var a=this.$createElement;this._self._c;return this._m(0)}),[function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("div",{staticClass:"row"},[t("div",{staticClass:"col"},[t("div",{attrs:{id:"accordion"}},[t("div",{staticClass:"card card-primary"},[t("div",{staticClass:"card-header"},[t("h4",{staticClass:"card-title"},[t("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseOne"}},[a._v("\n Create new accounts\n ")])])]),a._v(" "),t("div",{staticClass:"panel-collapse collapse show",attrs:{id:"collapseOne"}},[t("div",{staticClass:"card-body"},[t("div",{staticClass:"row"},[t("div",{staticClass:"col"},[t("p",[a._v("Explain")])])]),a._v(" "),t("div",{staticClass:"row"},[t("div",{staticClass:"col-lg-4"},[a._v("\n A\n ")]),a._v(" "),t("div",{staticClass:"col-lg-8"},[a._v("\n B\n ")])])])])]),a._v(" "),t("div",{staticClass:"card card-secondary"},[t("div",{staticClass:"card-header"},[t("h4",{staticClass:"card-title"},[t("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseTwo"}},[a._v("\n Collapsible Group Danger\n ")])])]),a._v(" "),t("div",{staticClass:"panel-collapse collapse",attrs:{id:"collapseTwo"}},[t("div",{staticClass:"card-body"},[a._v("\n Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid.\n 3\n wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt\n laborum\n eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee\n nulla\n assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred\n nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft\n beer\n farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus\n labore sustainable VHS.\n ")])])]),a._v(" "),t("div",{staticClass:"card card-secondary"},[t("div",{staticClass:"card-header"},[t("h4",{staticClass:"card-title"},[t("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseThree"}},[a._v("\n Collapsible Group Success\n ")])])]),a._v(" "),t("div",{staticClass:"panel-collapse collapse",attrs:{id:"collapseThree"}},[t("div",{staticClass:"card-body"},[a._v("\n Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid.\n 3\n wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt\n laborum\n eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee\n nulla\n assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred\n nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft\n beer\n farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus\n labore sustainable VHS.\n ")])])])])])])}],!1,null,"5c520d02",null).exports;t(7);var c=t(10),r={};new Vue({i18n:c,render:function(a){return a(i,{props:r})}}).$mount("#newuser")}},[[226,0,1]]]);
|
||||||
//# sourceMappingURL=index.js.map
|
//# sourceMappingURL=index.js.map
|
File diff suppressed because one or more lines are too long
2
public/v2/js/register.js
vendored
2
public/v2/js/register.js
vendored
@@ -1,2 +1,2 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{230:function(n,o,w){n.exports=w(231)},231:function(n,o,w){w(232)},232:function(n,o,w){window.$=window.jQuery=w(8)}},[[230,0,1]]]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{230:function(n,o,w){n.exports=w(231)},231:function(n,o,w){w(232)},232:function(n,o,w){window.$=window.jQuery=w(9)}},[[230,0,1]]]);
|
||||||
//# sourceMappingURL=register.js.map
|
//# sourceMappingURL=register.js.map
|
2
public/v2/js/transactions/create.js
vendored
2
public/v2/js/transactions/create.js
vendored
@@ -1,2 +1,2 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{229:function(a,t,s){a.exports=s(238)},238:function(a,t,s){"use strict";s.r(t);var c={name:"Create"},i=s(1),e=Object(i.a)(c,(function(){var a=this.$createElement;this._self._c;return this._m(0)}),[function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("div",{staticClass:"row"},[s("div",{staticClass:"col"},[s("div",{staticClass:"card"},[s("div",{staticClass:"card-header"},[s("h3",{staticClass:"card-title"},[a._v("Create a new transaction")])]),a._v(" "),s("div",{staticClass:"card-body"},[s("div",{attrs:{id:"accordion"}},[s("div",{staticClass:"card card-primary"},[s("div",{staticClass:"card-header"},[s("h4",{staticClass:"card-title"},[s("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseOne","aria-expanded":"true"}},[a._v("\n Basic transaction information\n ")])])]),a._v(" "),s("div",{staticClass:"panel-collapse in collapse show",attrs:{id:"collapseOne"}},[s("div",{staticClass:"card-body"},[s("div",{staticClass:"row"},[s("div",{staticClass:"col"},[a._v("From")]),a._v(" "),s("div",{staticClass:"col"},[a._v("To")])]),a._v(" "),s("div",{staticClass:"row"},[s("div",{staticClass:"col"},[a._v("\n Amount, foreign amount, description, time + date\n\n ")])])])])]),a._v(" "),s("div",{staticClass:"card card-secondary"},[s("div",{staticClass:"card-header"},[s("h4",{staticClass:"card-title"},[s("a",{staticClass:"collapsed",attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseTwo","aria-expanded":"false"}},[a._v("\n Meta information\n ")])])]),a._v(" "),s("div",{staticClass:"panel-collapse collapse",attrs:{id:"collapseTwo"}},[s("div",{staticClass:"card-body"},[a._v("\n Budget, category, bill, tags, contract\n ")])])]),a._v(" "),s("div",{staticClass:"card card-secondary"},[s("div",{staticClass:"card-header"},[s("h4",{staticClass:"card-title"},[s("a",{staticClass:"collapsed",attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseThree","aria-expanded":"false"}},[a._v("\n Extra information\n ")])])]),a._v(" "),s("div",{staticClass:"panel-collapse collapse",attrs:{id:"collapseThree"}},[s("div",{staticClass:"card-body"},[a._v("\n Notes, transaction links, custom fields.\n ")])])])])])]),a._v(" "),s("div",{staticClass:"row"},[s("div",{staticClass:"col"},[s("a",{staticClass:"btn btn-primary",attrs:{href:"#"}},[a._v("Add a split")])]),a._v(" "),s("div",{staticClass:"col"},[s("p",{staticClass:"float-right"},[s("a",{staticClass:"btn btn-success",attrs:{href:"#"}},[a._v("Store transaction")]),s("br")])])]),a._v(" "),s("div",{staticClass:"row"},[s("div",{staticClass:"col float-right"},[s("p",{staticClass:"text-right"},[s("small",{staticClass:"text-muted"},[a._v("Create another another another "),s("input",{attrs:{type:"checkbox"}})]),s("br"),a._v(" "),s("small",{staticClass:"text-muted"},[a._v("Return here "),s("input",{attrs:{type:"checkbox"}})]),s("br")])])])])])}],!1,null,"b9e6341e",null).exports;s(7);var r=s(9),l={};new Vue({i18n:r,render:function(a){return a(e,{props:l})}}).$mount("#transactions_create")}},[[229,0,1]]]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{229:function(a,t,s){a.exports=s(238)},238:function(a,t,s){"use strict";s.r(t);var c={name:"Create"},i=s(1),e=Object(i.a)(c,(function(){var a=this.$createElement;this._self._c;return this._m(0)}),[function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("div",{staticClass:"row"},[s("div",{staticClass:"col"},[s("div",{staticClass:"card"},[s("div",{staticClass:"card-header"},[s("h3",{staticClass:"card-title"},[a._v("Create a new transaction")])]),a._v(" "),s("div",{staticClass:"card-body"},[s("div",{attrs:{id:"accordion"}},[s("div",{staticClass:"card card-primary"},[s("div",{staticClass:"card-header"},[s("h4",{staticClass:"card-title"},[s("a",{attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseOne","aria-expanded":"true"}},[a._v("\n Basic transaction information\n ")])])]),a._v(" "),s("div",{staticClass:"panel-collapse in collapse show",attrs:{id:"collapseOne"}},[s("div",{staticClass:"card-body"},[s("div",{staticClass:"row"},[s("div",{staticClass:"col"},[a._v("From")]),a._v(" "),s("div",{staticClass:"col"},[a._v("To")])]),a._v(" "),s("div",{staticClass:"row"},[s("div",{staticClass:"col"},[a._v("\n Amount, foreign amount, description, time + date\n\n ")])])])])]),a._v(" "),s("div",{staticClass:"card card-secondary"},[s("div",{staticClass:"card-header"},[s("h4",{staticClass:"card-title"},[s("a",{staticClass:"collapsed",attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseTwo","aria-expanded":"false"}},[a._v("\n Meta information\n ")])])]),a._v(" "),s("div",{staticClass:"panel-collapse collapse",attrs:{id:"collapseTwo"}},[s("div",{staticClass:"card-body"},[a._v("\n Budget, category, bill, tags, contract\n ")])])]),a._v(" "),s("div",{staticClass:"card card-secondary"},[s("div",{staticClass:"card-header"},[s("h4",{staticClass:"card-title"},[s("a",{staticClass:"collapsed",attrs:{"data-toggle":"collapse","data-parent":"#accordion",href:"#collapseThree","aria-expanded":"false"}},[a._v("\n Extra information\n ")])])]),a._v(" "),s("div",{staticClass:"panel-collapse collapse",attrs:{id:"collapseThree"}},[s("div",{staticClass:"card-body"},[a._v("\n Notes, transaction links, custom fields.\n ")])])])])])]),a._v(" "),s("div",{staticClass:"row"},[s("div",{staticClass:"col"},[s("a",{staticClass:"btn btn-primary",attrs:{href:"#"}},[a._v("Add a split")])]),a._v(" "),s("div",{staticClass:"col"},[s("p",{staticClass:"float-right"},[s("a",{staticClass:"btn btn-success",attrs:{href:"#"}},[a._v("Store transaction")]),s("br")])])]),a._v(" "),s("div",{staticClass:"row"},[s("div",{staticClass:"col float-right"},[s("p",{staticClass:"text-right"},[s("small",{staticClass:"text-muted"},[a._v("Create another another another "),s("input",{attrs:{type:"checkbox"}})]),s("br"),a._v(" "),s("small",{staticClass:"text-muted"},[a._v("Return here "),s("input",{attrs:{type:"checkbox"}})]),s("br")])])])])])}],!1,null,"b9e6341e",null).exports;s(7);var r=s(10),l={};new Vue({i18n:r,render:function(a){return a(e,{props:l})}}).$mount("#transactions_create")}},[[229,0,1]]]);
|
||||||
//# sourceMappingURL=create.js.map
|
//# sourceMappingURL=create.js.map
|
File diff suppressed because one or more lines are too long
2
public/v2/js/vendor.js
vendored
2
public/v2/js/vendor.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -38,6 +38,10 @@
|
|||||||
<a href="{{ route('admin.index') }}" class="dropdown-item">
|
<a href="{{ route('admin.index') }}" class="dropdown-item">
|
||||||
<i class="fas fa-fw fa-envelope mr-2"></i> {{ 'administration'|_ }}
|
<i class="fas fa-fw fa-envelope mr-2"></i> {{ 'administration'|_ }}
|
||||||
</a>
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a href="#" class="dropdown-item">
|
||||||
|
<i class="fas fa-fw fa-external-link-alt mr-2"></i> {{ 'webhooks'|_ }}
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<!-- Notifications Dropdown Menu -->
|
<!-- Notifications Dropdown Menu -->
|
||||||
|
@@ -315,6 +315,7 @@ Route::group(
|
|||||||
|
|
||||||
// Preference API routes:
|
// Preference API routes:
|
||||||
Route::get('', ['uses' => 'PreferenceController@index', 'as' => 'index']);
|
Route::get('', ['uses' => 'PreferenceController@index', 'as' => 'index']);
|
||||||
|
Route::get('date-ranges', ['uses' => 'Preferences\IndexController@dateRanges', 'as' => 'date-ranges']);
|
||||||
Route::get('{preference}', ['uses' => 'PreferenceController@show', 'as' => 'show']);
|
Route::get('{preference}', ['uses' => 'PreferenceController@show', 'as' => 'show']);
|
||||||
Route::put('{preference}', ['uses' => 'PreferenceController@update', 'as' => 'update']);
|
Route::put('{preference}', ['uses' => 'PreferenceController@update', 'as' => 'update']);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user