mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-26 13:36:15 +00:00
Various changes
This commit is contained in:
@@ -19,7 +19,6 @@
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<div class="row">
|
||||
@@ -53,6 +52,42 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-if="loading">
|
||||
<td colspan="4" class="text-center">
|
||||
<i class="fa fa-refresh fa-spin"></i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-if="0 === this.rates.length">
|
||||
<td colspan="4" class="text-center">
|
||||
<i class="fa fa-battery-empty"></i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-for="(rate, index) in rates" :key="rate.key">
|
||||
<td>
|
||||
<input
|
||||
ref="date"
|
||||
:value="rate.date_field"
|
||||
autocomplete="off"
|
||||
class="form-control"
|
||||
name="date[]"
|
||||
type="date"
|
||||
v-bind:placeholder="$t('firefly.date')"
|
||||
v-bind:title="$t('firefly.date')"
|
||||
>
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" class="form-control" min="0" v-model="rate.rate">
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" class="form-control" min="0" v-model="rate.inverse">
|
||||
</td>
|
||||
<td>
|
||||
<button class="btn btn-danger" @click="deleteRate(index)">
|
||||
<em class="fa fa-trash"></em>
|
||||
</button>
|
||||
update + delete
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -62,11 +97,15 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
import format from "date-fns/format";
|
||||
|
||||
export default {
|
||||
name: "Rates",
|
||||
data() {
|
||||
return {
|
||||
rates: [],
|
||||
tempRates: {},
|
||||
from_code: '',
|
||||
to_code: '',
|
||||
from: {
|
||||
@@ -75,6 +114,7 @@ export default {
|
||||
to: {
|
||||
name: ''
|
||||
},
|
||||
loading: true,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
@@ -82,11 +122,19 @@ export default {
|
||||
let parts = window.location.href.split('/');
|
||||
this.from_code = parts[parts.length - 2].substring(0, 3);
|
||||
this.to_code = parts[parts.length - 1].substring(0, 3);
|
||||
console.log('From: ' + this.from_code + ' To: ' + this.to_code);
|
||||
this.downloadCurrencies();
|
||||
this.downloadRates(1);
|
||||
},
|
||||
methods: {
|
||||
downloadCurrencies: function() {
|
||||
deleteRate: function(index) {
|
||||
console.log(this.rates[index].key);
|
||||
this.rates.splice(index, 1);
|
||||
},
|
||||
updateRate: function(index) {
|
||||
console.log('Update!');
|
||||
console.log(this.rates[index].key);
|
||||
},
|
||||
downloadCurrencies: function () {
|
||||
axios.get("./api/v2/currencies/" + this.from_code).then((response) => {
|
||||
this.from = {
|
||||
id: response.data.data.id,
|
||||
@@ -103,7 +151,59 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
}
|
||||
downloadRates: function (page) {
|
||||
axios.get("./api/v2/exchange-rates/rates/" + this.from_code + '/' + this.to_code + '?page=' + page).then((response) => {
|
||||
for (let i in response.data.data) {
|
||||
if (response.data.data.hasOwnProperty(i)) {
|
||||
let current = response.data.data[i];
|
||||
let date = new Date(current.attributes.date);
|
||||
let from_code = current.attributes.from_currency_code;
|
||||
let to_code = current.attributes.to_currency_code;
|
||||
let rate = current.attributes.rate;
|
||||
let inverse = '';
|
||||
let key = from_code + '_' + to_code + '_' + format(date, 'yyyy-MM-dd');
|
||||
console.log('Key is now "' + key + '"');
|
||||
|
||||
// perhaps the returned rate is actually the inverse rate.
|
||||
if(from_code === this.to_code && to_code === this.from_code) {
|
||||
console.log('Inverse rate found!');
|
||||
key = to_code + '_' + from_code + '_' + format(date, 'yyyy-MM-dd');
|
||||
rate = '';
|
||||
inverse = current.attributes.rate;
|
||||
console.log('Key updated to "' + key + '"');
|
||||
}
|
||||
// inverse is not "" and existing inverse is ""?
|
||||
if (this.tempRates.hasOwnProperty(key) && inverse !== '' && this.tempRates[key].inverse === '') {
|
||||
this.tempRates[key].inverse = inverse;
|
||||
}
|
||||
// rate is not "" and existing rate is ""?
|
||||
if (this.tempRates.hasOwnProperty(key) && rate !== '' && this.tempRates[key].rate === '') {
|
||||
this.tempRates[key].rate = rate;
|
||||
}
|
||||
|
||||
if (!this.tempRates.hasOwnProperty(key)) {
|
||||
this.tempRates[key] = {
|
||||
key: key,
|
||||
date: date,
|
||||
date_formatted: format(date, this.$t('config.date_time_fns')),
|
||||
date_field: current.attributes.date.substring(0, 10),
|
||||
rate: rate,
|
||||
inverse: '',
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
if (parseInt(response.data.meta.pagination.current_page) < parseInt(response.data.meta.pagination.total_pages)) {
|
||||
this.downloadRates(page + 1);
|
||||
}
|
||||
if (parseInt(response.data.meta.pagination.current_page) === parseInt(response.data.meta.pagination.total_pages)) {
|
||||
this.loading = false;
|
||||
this.rates = Object.values(this.tempRates);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
@@ -23,7 +23,7 @@ import CreateTransaction from './components/transactions/CreateTransaction';
|
||||
import CustomDate from "./components/transactions/CustomDate";
|
||||
import CustomString from "./components/transactions/CustomString";
|
||||
import CustomTextarea from "./components/transactions/CustomTextarea";
|
||||
import StandardDate from "./components/transactions/StandardDate";
|
||||
import StandardDate from "./components/transactions/StandardDate";
|
||||
import GroupDescription from "./components/transactions/GroupDescription";
|
||||
import TransactionDescription from "./components/transactions/TransactionDescription";
|
||||
import CustomTransactionFields from "./components/transactions/CustomTransactionFields";
|
||||
|
||||
Reference in New Issue
Block a user