mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2024-11-26 02:40:43 -06:00
Rebuild frontend.
This commit is contained in:
parent
704cf26725
commit
e959dbc6e0
@ -20,23 +20,155 @@
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<div class="row" v-for="group in sortedGroups">
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">
|
||||
{{ group[1].title }}
|
||||
</h3>
|
||||
<a href="./subscriptions/create" class="btn btn-sm mb-2 float-right btn-success"><span class="fas fa-plus"></span> {{ $t('firefly.create_new_bill') }}</a>
|
||||
<button @click="newCacheKey" class="btn btn-sm mb-2 mr-2 float-right btn-info"><span class="fas fa-sync"></span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" v-for="group in sortedGroups">
|
||||
<div v-if="group[1].bills.length > 0" class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">
|
||||
{{ group[1].title }}
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
<b-table id="my-table" striped hover responsive="md" primary-key="id" :no-local-sorting="false"
|
||||
:items="group[1].bills"
|
||||
sort-icon-left
|
||||
:fields="fields"
|
||||
:busy.sync="loading"
|
||||
>
|
||||
<template #cell(name)="data">
|
||||
<a :href="'./bills/show/' + data.item.id">{{ data.item.name }}</a>
|
||||
|
||||
<br/>
|
||||
<small v-if="true === data.item.active && 0 === data.item.skip">{{ $t('firefly.bill_repeats_' + data.item.repeat_freq) }}</small>
|
||||
<small v-if="true === data.item.active && 1 === data.item.skip">{{ $t('firefly.bill_repeats_' + data.item.repeat_freq + '_other') }}</small>
|
||||
<small v-if="true === data.item.active && data.item.skip > 1">{{
|
||||
$t('firefly.bill_repeats_' + data.item.repeat_freq + '_skip', {skip: data.item.skip + 1})
|
||||
}}</small>
|
||||
<small v-if="false === data.item.active">{{ $t('firefly.inactive') }}</small>
|
||||
<!-- (rules, recurring) -->
|
||||
</template>
|
||||
<template #cell(expected_info)="data">
|
||||
<span v-if="true === data.item.active">
|
||||
<span v-if="data.item.paid_dates.length > 0 && data.item.pay_dates.length > 0">
|
||||
{{
|
||||
new Intl.DateTimeFormat(locale, {
|
||||
month: 'long',
|
||||
year: 'numeric',
|
||||
day: 'numeric'
|
||||
}).format(new Date(data.item.next_expected_match.substring(0, 10)))
|
||||
}}
|
||||
</span>
|
||||
<br>
|
||||
</span>
|
||||
<!--
|
||||
not paid, not expected and active
|
||||
-->
|
||||
<span v-if="0 === data.item.paid_dates.length && 0 === data.item.pay_dates.length && true === data.item.active">
|
||||
{{ $t('firefly.not_expected_period') }}
|
||||
</span>
|
||||
<!--
|
||||
not paid but expected
|
||||
-->
|
||||
|
||||
<span :title="new Intl.DateTimeFormat(locale, {
|
||||
month: 'long',
|
||||
year: 'numeric',
|
||||
day: 'numeric'
|
||||
}).format(new Date(data.item.pay_dates[0].substring(0,10)))"
|
||||
class="text-danger" v-if="0 === data.item.paid_dates.length && data.item.pay_dates.length > 0 && true === data.item.active">
|
||||
{{ $t('firefly.bill_expected_date_js', {date: data.item.next_expected_match_diff}) }}
|
||||
</span>
|
||||
|
||||
<!--
|
||||
bill is not active
|
||||
-->
|
||||
<span v-if="false === data.item.active">
|
||||
~
|
||||
</span>
|
||||
</template>
|
||||
<template #cell(start_date)="data">
|
||||
{{ formatDate(new Date(data.item.date.substring(0, 10)), $t('config.month_and_day_fns')) }}
|
||||
</template>
|
||||
<template #cell(end_date)="data">
|
||||
<span v-if="null !== data.item.end_date">{{
|
||||
formatDate(new Date(data.item.end_date.substring(0, 10)), $t('config.month_and_day_fns'))
|
||||
}}</span>
|
||||
<span v-if="null === data.item.end_date">{{ $t('firefly.forever') }}</span>
|
||||
<span v-if="null !== data.item.extension_date"><br/>
|
||||
<small>
|
||||
{{
|
||||
$t('firefly.extension_date_is', {date: formatDate(new Date(data.item.extension_date.substring(0, 10)), $t('config.month_and_day_fns'))})
|
||||
}}
|
||||
</small>
|
||||
</span>
|
||||
|
||||
</template>
|
||||
<template #cell(amount)="data">
|
||||
~ <span class="text-info">{{
|
||||
Intl.NumberFormat(locale, {style: 'currency', currency: data.item.currency_code}).format((data.item.amount_min + data.item.amount_max) / 2)
|
||||
}}
|
||||
</span>
|
||||
</template>
|
||||
<template #cell(payment_info)="data">
|
||||
<!--
|
||||
paid_dates >= 0 (bill is paid X times).
|
||||
Don't care about pay_dates.
|
||||
-->
|
||||
<span v-if="data.item.paid_dates.length > 0 && true === data.item.active">
|
||||
<span v-for="currentPaid in data.item.paid_dates">
|
||||
<a :href="'./transactions/show/' + currentPaid.transaction_group_id">
|
||||
{{
|
||||
new Intl.DateTimeFormat(locale, {
|
||||
year: 'numeric',
|
||||
month: 'long',
|
||||
day: 'numeric'
|
||||
}).format(new Date(currentPaid.date.substring(0, 10)))
|
||||
}}
|
||||
</a>
|
||||
<br/>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<!--
|
||||
bill is not active
|
||||
-->
|
||||
<span v-if="false === data.item.active">
|
||||
~
|
||||
</span>
|
||||
</template>
|
||||
<template #cell(menu)="data">
|
||||
<div class="btn-group btn-group-sm">
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-light btn-sm dropdown-toggle" type="button" :id="'dropdownMenuButton' + data.item.id" data-toggle="dropdown"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
{{ $t('firefly.actions') }}
|
||||
</button>
|
||||
<div class="dropdown-menu" :aria-labelledby="'dropdownMenuButton' + data.item.id">
|
||||
<a class="dropdown-item" :href="'./subscriptions/edit/' + data.item.id"><span class="fa fas fa-pencil-alt"></span> {{
|
||||
$t('firefly.edit')
|
||||
}}</a>
|
||||
<a class="dropdown-item" :href="'./subscriptions/delete/' + data.item.id"><span class="fa far fa-trash"></span> {{
|
||||
$t('firefly.delete')
|
||||
}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</b-table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
<b-table id="my-table" striped hover responsive="md" primary-key="id" :no-local-sorting="false"
|
||||
:items="group[1].bills"
|
||||
sort-icon-left
|
||||
:busy.sync="loading"
|
||||
>
|
||||
</b-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||
<a href="./subscriptions/create" class="btn btn-sm mt-2 float-right btn-success"><span class="fas fa-plus"></span> {{ $t('firefly.create_new_bill') }}</a>
|
||||
<button @click="newCacheKey" class="btn btn-sm mt-2 mr-2 float-right btn-info"><span class="fas fa-sync"></span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -45,6 +177,7 @@
|
||||
<script>
|
||||
import {mapGetters, mapMutations} from "vuex";
|
||||
import {configureAxios} from "../../shared/forageStore";
|
||||
import format from "date-fns/format";
|
||||
|
||||
export default {
|
||||
name: "Index",
|
||||
@ -55,6 +188,7 @@ export default {
|
||||
loading: false,
|
||||
locale: 'en-US',
|
||||
sortedGroups: [],
|
||||
fields: [],
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@ -62,10 +196,33 @@ export default {
|
||||
},
|
||||
created() {
|
||||
this.locale = localStorage.locale ?? 'en-US';
|
||||
this.updateFieldList();
|
||||
this.downloadBills(1);
|
||||
},
|
||||
methods: {
|
||||
...mapMutations('root', ['refreshCacheKey',]),
|
||||
formatDate: function (date, frm) {
|
||||
return format(date, frm);
|
||||
},
|
||||
updateFieldList: function () {
|
||||
this.fields = [];
|
||||
this.fields.push({key: 'name', label: this.$t('list.name')});
|
||||
|
||||
this.fields.push({key: 'expected_info', label: this.$t('list.expected_info')});
|
||||
this.fields.push({key: 'start_date', label: this.$t('list.start_date')});
|
||||
this.fields.push({key: 'end_date', label: this.$t('list.end_date')});
|
||||
|
||||
this.fields.push({key: 'amount', label: this.$t('list.amount')});
|
||||
this.fields.push({key: 'payment_info', label: this.$t('list.payment_info')});
|
||||
|
||||
this.fields.push({key: 'menu', label: ' ', sortable: false});
|
||||
},
|
||||
newCacheKey: function () {
|
||||
this.refreshCacheKey();
|
||||
this.downloaded = false;
|
||||
this.accounts = [];
|
||||
this.downloadBills(1);
|
||||
},
|
||||
resetGroups: function () {
|
||||
this.groups = {};
|
||||
this.groups[0] =
|
||||
@ -79,7 +236,7 @@ export default {
|
||||
downloadBills: function (page) {
|
||||
this.resetGroups();
|
||||
configureAxios().then(async (api) => {
|
||||
api.get('./api/v1/bills?page=' + page + 'key=' + this.cacheKey)
|
||||
api.get('./api/v1/bills?page=' + page + '&key=' + this.cacheKey + '&start=2021-07-01&end=2021-07-31')
|
||||
.then(response => {
|
||||
// pages
|
||||
let currentPage = parseInt(response.data.meta.pagination.current_page);
|
||||
@ -125,21 +282,26 @@ export default {
|
||||
}
|
||||
|
||||
bill.id = parseInt(current.id);
|
||||
bill.order = parseInt(current.order);
|
||||
bill.order = parseInt(current.attributes.order);
|
||||
bill.name = current.attributes.name;
|
||||
bill.repeat_freq = current.attributes.repeat_freq;
|
||||
bill.skip = current.attributes.skip;
|
||||
bill.active = current.attributes.active;
|
||||
bill.date = current.attributes.date;
|
||||
bill.end_date = current.attributes.end_date;
|
||||
bill.extension_date = current.attributes.extension_date;
|
||||
bill.amount_max = parseFloat(current.attributes.amount_max);
|
||||
bill.amount_min = parseFloat(current.attributes.amount_min);
|
||||
bill.currency_code = parseFloat(current.attributes.currency_code);
|
||||
bill.currency_id = parseFloat(current.attributes.currency_id);
|
||||
bill.currency_decimal_places = parseFloat(current.attributes.currency_decimal_places);
|
||||
bill.currency_symbol = parseFloat(current.attributes.currency_symbol);
|
||||
bill.next_expected_match = parseFloat(current.attributes.next_expected_match);
|
||||
bill.notes = parseFloat(current.attributes.notes);
|
||||
bill.paid_dates = parseFloat(current.attributes.paid_dates);
|
||||
bill.pay_dates = parseFloat(current.attributes.pay_dates);
|
||||
bill.currency_code = current.attributes.currency_code;
|
||||
bill.currency_id = parseInt(current.attributes.currency_id);
|
||||
bill.currency_decimal_places = parseInt(current.attributes.currency_decimal_places);
|
||||
bill.currency_symbol = current.attributes.currency_symbol;
|
||||
bill.next_expected_match = current.attributes.next_expected_match;
|
||||
bill.next_expected_match_diff = current.attributes.next_expected_match_diff;
|
||||
|
||||
bill.notes = current.attributes.notes;
|
||||
bill.paid_dates = current.attributes.paid_dates;
|
||||
bill.pay_dates = current.attributes.pay_dates;
|
||||
|
||||
this.groups[groupId].bills.push(bill);
|
||||
}
|
||||
|
@ -615,7 +615,7 @@ export default {
|
||||
// console.log('now at ' + i);
|
||||
|
||||
// for transfers, overrule both the source and the destination:
|
||||
if ('Transfer' === this.transactionType) {
|
||||
if ('transfer' === this.transactionType.toLowerCase()) {
|
||||
data.transactions[i].source_name = null;
|
||||
data.transactions[i].destination_name = null;
|
||||
if (i > 0) {
|
||||
@ -624,7 +624,7 @@ export default {
|
||||
}
|
||||
}
|
||||
// for deposits, overrule the destination and ignore the rest.
|
||||
if ('Deposit' === this.transactionType) {
|
||||
if ('deposit' === this.transactionType.toLowerCase()) {
|
||||
data.transactions[i].destination_name = null;
|
||||
if (i > 0) {
|
||||
data.transactions[i].destination_id = data.transactions[0].destination_id;
|
||||
@ -632,7 +632,7 @@ export default {
|
||||
}
|
||||
|
||||
// for withdrawals, overrule the source and ignore the rest.
|
||||
if ('Withdrawal' === this.transactionType) {
|
||||
if ('withdrawal' === this.transactionType.toLowerCase()) {
|
||||
data.transactions[i].source_name = null;
|
||||
if (i > 0) {
|
||||
data.transactions[i].source_id = data.transactions[0].source_id;
|
||||
|
@ -990,9 +990,9 @@
|
||||
"@types/estree" "*"
|
||||
|
||||
"@types/eslint@*":
|
||||
version "7.2.14"
|
||||
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.14.tgz#088661518db0c3c23089ab45900b99dd9214b92a"
|
||||
integrity sha512-pESyhSbUOskqrGcaN+bCXIQDyT5zTaRWfj5ZjjSlMatgGjIn3QQPfocAu4WSabUR7CGyLZ2CQaZyISOEX7/saw==
|
||||
version "7.28.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a"
|
||||
integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==
|
||||
dependencies:
|
||||
"@types/estree" "*"
|
||||
"@types/json-schema" "*"
|
||||
@ -1064,9 +1064,9 @@
|
||||
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
|
||||
|
||||
"@types/node@*":
|
||||
version "16.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.3.1.tgz#24691fa2b0c3ec8c0d34bfcfd495edac5593ebb4"
|
||||
integrity sha512-N87VuQi7HEeRJkhzovao/JviiqKjDKMVKxKMfUvSKw+MbkbW8R0nA3fi/MQhhlxV2fQ+2ReM+/Nt4efdrJx3zA==
|
||||
version "16.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.3.3.tgz#0c30adff37bbbc7a50eb9b58fae2a504d0d88038"
|
||||
integrity sha512-8h7k1YgQKxKXWckzFCMfsIwn0Y61UK6tlD6y2lOb3hTOIMlK3t9/QwHOhc81TwU+RMf0As5fj7NPjroERCnejQ==
|
||||
|
||||
"@types/parse-json@^4.0.0":
|
||||
version "4.0.0"
|
||||
@ -1491,9 +1491,9 @@ at-least-node@^1.0.0:
|
||||
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
|
||||
|
||||
autoprefixer@^10.2.6:
|
||||
version "10.3.0"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.3.0.tgz#c60803dce9268f7fe0a5e5c1fe48a74356d7b864"
|
||||
integrity sha512-BzVzdjs47nT3MphTddr8eSsPVEIUCF96X6iC8V5iEB8RtxrU+ybtdhHV5rsqRqOsoyh/acQaYs7YupHPUECgmg==
|
||||
version "10.3.1"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.3.1.tgz#954214821d3aa06692406c6a0a9e9d401eafbed2"
|
||||
integrity sha512-L8AmtKzdiRyYg7BUXJTzigmhbQRCXFKz6SA1Lqo0+AR2FBbQ4aTAPFSDlOutnFkjhiz8my4agGXog1xlMjPJ6A==
|
||||
dependencies:
|
||||
browserslist "^4.16.6"
|
||||
caniuse-lite "^1.0.30001243"
|
||||
@ -1905,9 +1905,9 @@ caniuse-api@^3.0.0:
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001243:
|
||||
version "1.0.30001243"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001243.tgz#d9250155c91e872186671c523f3ae50cfc94a3aa"
|
||||
integrity sha512-vNxw9mkTBtkmLFnJRv/2rhs1yufpDfCkBZexG3Y0xdOH2Z/eE/85E4Dl5j1YUN34nZVsSp6vVRFQRrez9wJMRA==
|
||||
version "1.0.30001245"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz#45b941bbd833cb0fa53861ff2bae746b3c6ca5d4"
|
||||
integrity sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==
|
||||
|
||||
chalk@^2.0.0, chalk@^2.4.2:
|
||||
version "2.4.2"
|
||||
@ -2079,9 +2079,9 @@ color-name@^1.0.0, color-name@~1.1.4:
|
||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||
|
||||
colord@^2.0.1:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/colord/-/colord-2.1.0.tgz#28cd9d6ac874dff97ef5ec1432c5c0b4e58e49c7"
|
||||
integrity sha512-H5sDP9XDk2uP+x/xSGkgB9SEFc1bojdI5DMKU0jmSXQtml2GIe48dj1DcSS0e53QQAHn+JKqUXbGeGX24xWD7w==
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/colord/-/colord-2.2.0.tgz#1b6b97ad3d0845f179d1dbd401158bc3cf062eff"
|
||||
integrity sha512-LNYryRuHYAiq+5/22oIblna5nWztTm6LM4xGvvpB42jYQgE1AhmW/dN+rhem8L3tVz0B/Ej2zuDB8zlaS1OSWw==
|
||||
|
||||
colorette@^1.2.1, colorette@^1.2.2:
|
||||
version "1.2.2"
|
||||
@ -2224,7 +2224,7 @@ core-js@^2.4.0:
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
|
||||
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
|
||||
|
||||
core-js@^3.6.5:
|
||||
core-js@^3.15.2:
|
||||
version "3.15.2"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.15.2.tgz#740660d2ff55ef34ce664d7e2455119c5bdd3d61"
|
||||
integrity sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==
|
||||
@ -2330,9 +2330,9 @@ css-declaration-sorter@^6.0.3:
|
||||
timsort "^0.3.0"
|
||||
|
||||
css-loader@^5.2.6:
|
||||
version "5.2.6"
|
||||
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.6.tgz#c3c82ab77fea1f360e587d871a6811f4450cc8d1"
|
||||
integrity sha512-0wyN5vXMQZu6BvjbrPdUJvkCzGEO24HC7IS7nW4llc6BBFC+zwR9CKtYGv63Puzsg10L/o12inMY5/2ByzfD6w==
|
||||
version "5.2.7"
|
||||
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae"
|
||||
integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==
|
||||
dependencies:
|
||||
icss-utils "^5.1.0"
|
||||
loader-utils "^2.0.0"
|
||||
@ -2687,12 +2687,12 @@ datatables.net@1.10.25, datatables.net@>=1.10.13, datatables.net@>=1.10.25, data
|
||||
dependencies:
|
||||
jquery ">=1.7"
|
||||
|
||||
date-fns-tz@^1.0.12:
|
||||
date-fns-tz@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/date-fns-tz/-/date-fns-tz-1.1.4.tgz#38282c2bfab08946a4e9bb89d733451e5525048b"
|
||||
integrity sha512-lQ+FF7xUxxRuRqIY7H/lagnT3PhhSnnvtGHzjE5WZKwRyLU7glJfLys05SZ7zHlEr6RXWiqkmgWq4nCkcElR+g==
|
||||
|
||||
date-fns@^2.21.1, date-fns@^2.8.1:
|
||||
date-fns@^2.21.1, date-fns@^2.22.1:
|
||||
version "2.22.1"
|
||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.22.1.tgz#1e5af959831ebb1d82992bf67b765052d8f0efc4"
|
||||
integrity sha512-yUFPQjrxEmIsMqlHhAhmxkuH769baF21Kk+nZwZGyrMoyLA+LugaQtC0+Tqf9CBUUULWwUJt6Q5ySI3LJDDCGg==
|
||||
@ -2923,9 +2923,9 @@ ekko-lightbox@^5.3.0:
|
||||
integrity sha512-mbacwySuVD3Ad6F2hTkjSTvJt59bcVv2l/TmBerp4xZnLak8tPtA4AScUn4DL42c1ksTiAO6sGhJZ52P/1Qgew==
|
||||
|
||||
electron-to-chromium@^1.3.723:
|
||||
version "1.3.772"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.772.tgz#fd1ed39f9f3149f62f581734e4f026e600369479"
|
||||
integrity sha512-X/6VRCXWALzdX+RjCtBU6cyg8WZgoxm9YA02COmDOiNJEZ59WkQggDbWZ4t/giHi/3GS+cvdrP6gbLISANAGYA==
|
||||
version "1.3.779"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.779.tgz#de55492a756deec63424f89fbe62aec9776f0e6d"
|
||||
integrity sha512-nreave0y/1Qhmo8XtO6C/LpawNyC6U26+q7d814/e+tIqUK073pM+4xW7WUXyqCRa5K4wdxHmNMBAi8ap9nEew==
|
||||
|
||||
elliptic@^6.5.3:
|
||||
version "6.5.4"
|
||||
@ -3948,9 +3948,9 @@ is-color-stop@^1.1.0:
|
||||
rgba-regex "^1.0.0"
|
||||
|
||||
is-core-module@^2.2.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1"
|
||||
integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491"
|
||||
integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==
|
||||
dependencies:
|
||||
has "^1.0.3"
|
||||
|
||||
@ -4365,11 +4365,6 @@ lodash.uniq@^4.5.0:
|
||||
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
|
||||
|
||||
lodash@4.17.20:
|
||||
version "4.17.20"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
|
||||
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
|
||||
|
||||
lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
@ -4740,9 +4735,9 @@ object-assign@^4.1.0, object-assign@^4.1.1:
|
||||
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
|
||||
|
||||
object-inspect@^1.6.0:
|
||||
version "1.10.3"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369"
|
||||
integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
|
||||
integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==
|
||||
|
||||
object-is@^1.0.1:
|
||||
version "1.1.5"
|
||||
@ -4879,9 +4874,9 @@ p-pipe@^3.0.0:
|
||||
integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==
|
||||
|
||||
p-retry@^4.5.0:
|
||||
version "4.6.0"
|
||||
resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.0.tgz#9de15ae696278cffe86fce2d8f73b7f894f8bc9e"
|
||||
integrity sha512-SAHbQEwg3X5DRNaLmWjT+DlGc93ba5i+aP3QLfVNDncQEQO4xjbYW4N/lcVTSuP0aJietGfx2t94dJLzfBMpXw==
|
||||
version "4.6.1"
|
||||
resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c"
|
||||
integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==
|
||||
dependencies:
|
||||
"@types/retry" "^0.12.0"
|
||||
retry "^0.13.1"
|
||||
@ -5737,7 +5732,7 @@ schema-utils@^2.6.5:
|
||||
ajv "^6.12.4"
|
||||
ajv-keywords "^3.5.2"
|
||||
|
||||
schema-utils@^3.0.0:
|
||||
schema-utils@^3.0.0, schema-utils@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.0.tgz#95986eb604f66daadeed56e379bfe7a7f963cdb9"
|
||||
integrity sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==
|
||||
@ -6453,14 +6448,14 @@ uuid@^8.3.0:
|
||||
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
|
||||
|
||||
v-calendar@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/v-calendar/-/v-calendar-2.3.0.tgz#5709d2b0028db9d464b7e06c700894735400d564"
|
||||
integrity sha512-OMZJaE45deO5+W5+xueVEHpwhfOGUb2sKjM7w56lCBFaEHQxeYuz3if1zMa65BI3EXU5iKizNVZM6BD8bymWyQ==
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/v-calendar/-/v-calendar-2.3.1.tgz#9f242f1f99e4e22d94028202d873b006ae5c8340"
|
||||
integrity sha512-mDBEG9P9uUWoIC5u46oSJoC9Ap8ZZu1Z3aC5PrXj2ez9VBmPmLyeg0eMCuUYyZca98F7ilMcuA6gR3uP/iOD4A==
|
||||
dependencies:
|
||||
core-js "^3.6.5"
|
||||
date-fns "^2.8.1"
|
||||
date-fns-tz "^1.0.12"
|
||||
lodash "4.17.20"
|
||||
core-js "^3.15.2"
|
||||
date-fns "^2.22.1"
|
||||
date-fns-tz "^1.1.4"
|
||||
lodash "^4.17.21"
|
||||
|
||||
v8-compile-cache@^2.2.0:
|
||||
version "2.3.0"
|
||||
@ -6493,9 +6488,9 @@ vue-hot-reload-api@^2.3.0:
|
||||
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
|
||||
|
||||
vue-i18n@^8.24.2:
|
||||
version "8.24.5"
|
||||
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.24.5.tgz#7127a666d5be2199be69be39e439a419a90ff931"
|
||||
integrity sha512-p8W5xOmniuZ8fj76VXe0vBL3bRWVU87jHuC/v8VwmhKVH2iMQsKnheB1U+umxDBqC/5g9K+NwzokepcLxnBAVQ==
|
||||
version "8.25.0"
|
||||
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.25.0.tgz#1037d9295fa2845a230b771de473481edb2cfc4c"
|
||||
integrity sha512-ynhcL+PmTxuuSE1T10htiSXzjBozxYIE3ffbM1RfgAkVbr/v1SP+9Mi/7/uv8ZVV1yGuKjFAYp9BXq+X7op6MQ==
|
||||
|
||||
vue-loader@^15:
|
||||
version "15.9.7"
|
||||
@ -6665,9 +6660,9 @@ webpack-sources@^2.3.0:
|
||||
source-map "^0.6.1"
|
||||
|
||||
webpack@^5.38.1, webpack@^5.40.0:
|
||||
version "5.44.0"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.44.0.tgz#97b13a02bd79fb71ac6301ce697920660fa214a1"
|
||||
integrity sha512-I1S1w4QLoKmH19pX6YhYN0NiSXaWY8Ou00oA+aMcr9IUGeF5azns+IKBkfoAAG9Bu5zOIzZt/mN35OffBya8AQ==
|
||||
version "5.45.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.45.1.tgz#d78dcbeda18a872dc62b0455d3ed3dcfd1c886bb"
|
||||
integrity sha512-68VT2ZgG9EHs6h6UxfV2SEYewA9BA3SOLSnC2NEbJJiEwbAiueDL033R1xX0jzjmXvMh0oSeKnKgbO2bDXIEyQ==
|
||||
dependencies:
|
||||
"@types/eslint-scope" "^3.7.0"
|
||||
"@types/estree" "^0.0.50"
|
||||
@ -6687,7 +6682,7 @@ webpack@^5.38.1, webpack@^5.40.0:
|
||||
loader-runner "^4.2.0"
|
||||
mime-types "^2.1.27"
|
||||
neo-async "^2.6.2"
|
||||
schema-utils "^3.0.0"
|
||||
schema-utils "^3.1.0"
|
||||
tapable "^2.1.1"
|
||||
terser-webpack-plugin "^5.1.3"
|
||||
watchpack "^2.2.0"
|
||||
|
1
public/v1/js/ff/intro/intro.js
vendored
1
public/v1/js/ff/intro/intro.js
vendored
@ -45,5 +45,6 @@ function setupIntro(steps) {
|
||||
}
|
||||
|
||||
function reportIntroFinished() {
|
||||
console.log('Route for finished intro: ' + routeForFinishedTour);
|
||||
$.post(routeForFinishedTour, {_token: token});
|
||||
}
|
3
public/v1/js/ff/recurring/create.js
vendored
3
public/v1/js/ff/recurring/create.js
vendored
@ -198,6 +198,7 @@ function updateFormFields() {
|
||||
|
||||
// show budget
|
||||
$('#budget_id_holder').show();
|
||||
$('#bill_id_holder').show();
|
||||
|
||||
// hide piggy bank:
|
||||
$('#piggy_bank_id_holder').hide();
|
||||
@ -214,6 +215,7 @@ function updateFormFields() {
|
||||
|
||||
$('#destination_id_holder').show();
|
||||
$('#budget_id_holder').hide();
|
||||
$('#bill_id_holder').hide();
|
||||
$('#piggy_bank_id_holder').hide();
|
||||
}
|
||||
|
||||
@ -228,6 +230,7 @@ function updateFormFields() {
|
||||
|
||||
$('#destination_id_holder').show();
|
||||
$('#budget_id_holder').hide();
|
||||
$('#bill_id_holder').hide();
|
||||
$('#piggy_bank_id_holder').show();
|
||||
}
|
||||
}
|
||||
|
2
public/v2/js/accounts/create.js
vendored
2
public/v2/js/accounts/create.js
vendored
File diff suppressed because one or more lines are too long
2
public/v2/js/accounts/delete.js
vendored
2
public/v2/js/accounts/delete.js
vendored
File diff suppressed because one or more lines are too long
2
public/v2/js/accounts/index.js
vendored
2
public/v2/js/accounts/index.js
vendored
File diff suppressed because one or more lines are too long
2
public/v2/js/accounts/show.js
vendored
2
public/v2/js/accounts/show.js
vendored
File diff suppressed because one or more lines are too long
2
public/v2/js/bills/index.js
vendored
2
public/v2/js/bills/index.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/budgets/index.js
vendored
2
public/v2/js/budgets/index.js
vendored
File diff suppressed because one or more lines are too long
2
public/v2/js/dashboard.js
vendored
2
public/v2/js/dashboard.js
vendored
File diff suppressed because one or more lines are too long
2
public/v2/js/manifest.js
vendored
2
public/v2/js/manifest.js
vendored
@ -1 +1 @@
|
||||
(()=>{"use strict";var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var l=t[e]={id:e,loaded:!1,exports:{}};return r[e].call(l.exports,l,l.exports,o),l.loaded=!0,l.exports}o.m=r,e=[],o.O=(r,t,n,l)=>{if(!t){var i=1/0;for(d=0;d<e.length;d++){for(var[t,n,l]=e[d],a=!0,u=0;u<t.length;u++)(!1&l||i>=l)&&Object.keys(o.O).every((e=>o.O[e](t[u])))?t.splice(u--,1):(a=!1,l<i&&(i=l));a&&(e.splice(d--,1),r=n())}return r}l=l||0;for(var d=e.length;d>0&&e[d-1][2]>l;d--)e[d]=e[d-1];e[d]=[t,n,l]},o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e={721:0,879:0};o.O.j=r=>0===e[r];var r=(r,t)=>{var n,l,[i,a,u]=t,d=0;for(n in a)o.o(a,n)&&(o.m[n]=a[n]);if(u)var f=u(o);for(r&&r(t);d<i.length;d++)l=i[d],o.o(e,l)&&e[l]&&e[l][0](),e[i[d]]=0;return o.O(f)},t=self.webpackChunk=self.webpackChunk||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();
|
||||
(()=>{"use strict";var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={id:e,loaded:!1,exports:{}};return r[e].call(i.exports,i,i.exports,o),i.loaded=!0,i.exports}o.m=r,e=[],o.O=(r,t,n,i)=>{if(!t){var l=1/0;for(f=0;f<e.length;f++){for(var[t,n,i]=e[f],a=!0,u=0;u<t.length;u++)(!1&i||l>=i)&&Object.keys(o.O).every((e=>o.O[e](t[u])))?t.splice(u--,1):(a=!1,i<l&&(l=i));if(a){e.splice(f--,1);var d=n();void 0!==d&&(r=d)}}return r}i=i||0;for(var f=e.length;f>0&&e[f-1][2]>i;f--)e[f]=e[f-1];e[f]=[t,n,i]},o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e={721:0,879:0};o.O.j=r=>0===e[r];var r=(r,t)=>{var n,i,[l,a,u]=t,d=0;for(n in a)o.o(a,n)&&(o.m[n]=a[n]);if(u)var f=u(o);for(r&&r(t);d<l.length;d++)i=l[d],o.o(e,i)&&e[i]&&e[i][0](),e[l[d]]=0;return o.O(f)},t=self.webpackChunk=self.webpackChunk||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();
|
||||
|
File diff suppressed because one or more lines are too long
2
public/v2/js/transactions/create.js
vendored
2
public/v2/js/transactions/create.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/transactions/edit.js
vendored
2
public/v2/js/transactions/edit.js
vendored
File diff suppressed because one or more lines are too long
2
public/v2/js/transactions/index.js
vendored
2
public/v2/js/transactions/index.js
vendored
File diff suppressed because one or more lines are too long
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
@ -90,7 +90,7 @@
|
||||
*/
|
||||
|
||||
/*!
|
||||
* vue-i18n v8.24.5
|
||||
* vue-i18n v8.25.0
|
||||
* (c) 2021 kazuya kawaguchi
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
|
File diff suppressed because one or more lines are too long
@ -128,6 +128,13 @@
|
||||
{# CATEGORY ALWAYS #}
|
||||
{{ ExpandedForm.text('category') }}
|
||||
|
||||
{# BILL / SUBSCRIPTION ONLY FOR WITHDRAWALS #}
|
||||
{% if bills|length > 1 %}
|
||||
{{ ExpandedForm.select('bill_id', bills, null) }}
|
||||
{% else %}
|
||||
{{ ExpandedForm.select('bill_id', bills, null, {helpText: trans('firefly.no_bill_pointer', {link: route('bills.index')})}) }}
|
||||
{% endif %}
|
||||
|
||||
{# TAGS #}
|
||||
{{ ExpandedForm.text('tags') }}
|
||||
|
||||
|
@ -125,6 +125,13 @@
|
||||
{# CATEGORY ALWAYS #}
|
||||
{{ ExpandedForm.text('category',array.transactions[0].category_name) }}
|
||||
|
||||
{# BILL ONLY WHEN CREATING A WITHDRAWAL #}
|
||||
{% if bills|length > 1 %}
|
||||
{{ ExpandedForm.select('bill_id', bills, array.transactions[0].bill_id) }}
|
||||
{% else %}
|
||||
{{ ExpandedForm.select('bill_id', bills, array.transactions[0].bill_id, {helpText: trans('firefly.no_bill_pointer', {link: route('bills.index')})}) }}
|
||||
{% endif %}
|
||||
|
||||
{# TAGS #}
|
||||
{{ ExpandedForm.text('tags', array.transactions[0].tags) }}
|
||||
|
||||
|
@ -46,10 +46,10 @@
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{ route('bills.index') }}" class="nav-link {{ activeRoutePartial('bills') }}">
|
||||
<a href="{{ route('subscriptions.index') }}" class="nav-link {{ activeRoutePartial('bills') }} {{ activeRoutePartial('subscriptions') }}">
|
||||
<span class="nav-icon far fa-calendar-alt"></span>
|
||||
<p>
|
||||
{{ 'bills'|_ }}
|
||||
{{ 'subscriptions'|_ }}
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
@ -365,6 +365,45 @@ try {
|
||||
}
|
||||
);
|
||||
|
||||
// SUBSCRIPTIONS
|
||||
Breadcrumbs::for(
|
||||
'subscriptions.index',
|
||||
static function (Generator $breadcrumbs) {
|
||||
$breadcrumbs->parent('home');
|
||||
$breadcrumbs->push(trans('breadcrumbs.bills'), route('subscriptions.index'));
|
||||
}
|
||||
);
|
||||
Breadcrumbs::for(
|
||||
'subscriptions.create',
|
||||
static function (Generator $breadcrumbs) {
|
||||
$breadcrumbs->parent('subscriptions.index');
|
||||
$breadcrumbs->push(trans('breadcrumbs.newBill'), route('subscriptions.create'));
|
||||
}
|
||||
);
|
||||
|
||||
Breadcrumbs::for(
|
||||
'subscriptions.edit',
|
||||
static function (Generator $breadcrumbs, Bill $bill) {
|
||||
$breadcrumbs->parent('subscriptions.show', $bill);
|
||||
$breadcrumbs->push(trans('breadcrumbs.edit_bill', ['name' => limitStringLength($bill->name)]), route('subscriptions.edit', [$bill->id]));
|
||||
}
|
||||
);
|
||||
Breadcrumbs::for(
|
||||
'subscriptions.delete',
|
||||
static function (Generator $breadcrumbs, Bill $bill) {
|
||||
$breadcrumbs->parent('subscriptions.show', $bill);
|
||||
$breadcrumbs->push(trans('breadcrumbs.delete_bill', ['name' => limitStringLength($bill->name)]), route('subscriptions.delete', [$bill->id]));
|
||||
}
|
||||
);
|
||||
|
||||
Breadcrumbs::for(
|
||||
'subscriptions.show',
|
||||
static function (Generator $breadcrumbs, Bill $bill) {
|
||||
$breadcrumbs->parent('subscriptions.index');
|
||||
$breadcrumbs->push(limitStringLength($bill->name), route('subscriptions.show', [$bill->id]));
|
||||
}
|
||||
);
|
||||
|
||||
// BUDGETS
|
||||
Breadcrumbs::for(
|
||||
'budgets.index',
|
||||
|
@ -200,6 +200,24 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
Route::group(
|
||||
['middleware' => 'user-full-auth', 'namespace' => 'FireflyIII\Http\Controllers', 'prefix' => 'subscriptions', 'as' => 'subscriptions.'],
|
||||
static function () {
|
||||
Route::get('', ['uses' => 'Bill\IndexController@index', 'as' => 'index']);
|
||||
Route::get('rescan/{bill}', ['uses' => 'Bill\ShowController@rescan', 'as' => 'rescan']);
|
||||
Route::get('create', ['uses' => 'Bill\CreateController@create', 'as' => 'create']);
|
||||
Route::get('edit/{bill}', ['uses' => 'Bill\EditController@edit', 'as' => 'edit']);
|
||||
Route::get('delete/{bill}', ['uses' => 'Bill\DeleteController@delete', 'as' => 'delete']);
|
||||
Route::get('show/{bill}', ['uses' => 'Bill\ShowController@show', 'as' => 'show']);
|
||||
|
||||
Route::post('store', ['uses' => 'Bill\CreateController@store', 'as' => 'store']);
|
||||
Route::post('update/{bill}', ['uses' => 'Bill\EditController@update', 'as' => 'update']);
|
||||
Route::post('destroy/{bill}', ['uses' => 'Bill\DeleteController@destroy', 'as' => 'destroy']);
|
||||
|
||||
Route::post('set-order/{bill}', ['uses' => 'Bill\IndexController@setOrder', 'as' => 'set-order']);
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* Budget Controller.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user