First edit that works locally. Rebuilt CSS.

This commit is contained in:
James Cole 2021-03-03 07:03:44 +01:00
parent df9c9ce044
commit 4f76ea560d
No known key found for this signature in database
GPG Key ID: B5669F9493CDE38D
46 changed files with 1586 additions and 277 deletions

View File

@ -10,6 +10,7 @@
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"admin-lte": "^3.0",
"axios": "^0.21",
"cross-env": "^7.0",
"laravel-mix": "^5.0.9",

59
frontend/src/app.scss vendored
View File

@ -25,10 +25,59 @@
// iCheck
@import '~icheck-bootstrap/icheck-bootstrap.css';
// AdminLTE
@import 'dist/css/adminlte.css';
//@import 'dist/css/adminlte.css';
//@import 'adminlte/scss/adminlte.css'
//@import '~admin-lte/build/scss/AdminLTE';
// ADMIN LTE
@import '~bootstrap/scss/functions';
@import '~admin-lte/build/scss/bootstrap-variables';
@import '~bootstrap/scss/bootstrap';
// Variables and Mixins
// ---------------------------------------------------
@import '~admin-lte/build/scss/variables';
// Firefly III colors (?)
@import 'scss/variables';
@import '~admin-lte/build/scss/mixins';
@import '~admin-lte/build/scss/parts/core';
// admin LTE components
@import '~admin-lte/build/scss/forms';
@import '~admin-lte/build/scss/progress-bars';
@import '~admin-lte/build/scss/cards';
@import '~admin-lte/build/scss/modals';
//@import '../toasts';
@import '~admin-lte/build/scss/buttons';
//@import '../callout';
@import '~admin-lte/build/scss/alerts';
@import '~admin-lte/build/scss/table';
//@import '../carousel';
// admin LTE extra components
//@import '../small-box';
@import '~admin-lte/build/scss/info-box';
//@import '../timeline';
//@import '../products';
//@import '../direct-chat';
//@import '../users-list';
//@import '../social-widgets';
// admin LTE pages (unused)
// @import 'parts/pages';
// admin LTE plugins (unused)
// @import 'parts/plugins';
// admin LTE misc
@import '~admin-lte/build/scss/miscellaneous';
@import '~admin-lte/build/scss/print';
@import '~admin-lte/build/scss/text';
@import '~admin-lte/build/scss/elevation';
@import '~admin-lte/build/scss/colors';
// Bootstrap
// Already imported by AdminLTE
//@import '~bootstrap/scss/bootstrap';

View File

@ -67,7 +67,7 @@
</div>
<div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
<!-- buttons -->
<div class="card">
<div class="card card-primary">
<div class="card-body">
<div class="row">
<div class="col">

View File

@ -144,6 +144,10 @@ export default {
// which custom fields to show TODO
customFields: {},
// group ID + title once submitted:
returnedGroupId: 0,
returnedGroupTitle: '',
// date and time of the transaction, TODO
date: new Date,
time: new Date,
@ -527,7 +531,7 @@ export default {
if (shouldSubmit) {
this.submitUpdate(submission);
}
console.log(submission);
//console.log(submission);
},
compareLinks: function (array) {
let compare = [];
@ -550,16 +554,130 @@ export default {
return JSON.stringify(compare);
},
submitUpdate: function (submission) {
console.log('submitUpdate');
const url = './api/v1/transactions/' + this.groupId;
axios.put(url, submission)
.then(response => {
console.log('OK!');
// console.log('Response is OK!');
// report the transaction is submitted.
this.submittedTransaction = true;
// // submit links and attachments (can only be done when the transaction is created)
// this.submitTransactionLinks(data, response);
// this.submitAttachments(data, response);
//
// // meanwhile, store the ID and the title in some easy to access variables.
// this.returnedGroupId = parseInt(response.data.data.id);
// this.returnedGroupTitle = null === response.data.data.attributes.group_title ? response.data.data.attributes.transactions[0].description : response.data.data.attributes.group_title;
}
).catch(error => {
console.log('error :(');
console.log(error);
});
}
)
.catch(error => {
console.log('error :(');
console.log(error.response.data);
// oh noes Firefly III has something to bitch about.
this.enableSubmit = true;
// report the transaction is submitted.
this.submittedTransaction = true;
// // also report attachments and links are submitted:
this.submittedAttachments = true;
this.submittedLinks = true;
//
// but report an error because error:
this.inError = true;
this.parseErrors(error.response.data);
}
);
},
parseErrors: function (errors) {
for (let i in this.transactions) {
if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\d*$/.test(i) && i <= 4294967294) {
this.resetErrors({index: i});
}
}
this.successMessage = '';
this.errorMessage = this.$t('firefly.errors_submission');
if (typeof errors.errors === 'undefined') {
this.successMessage = '';
this.errorMessage = errors.message;
}
let payload;
let transactionIndex;
let fieldName;
// fairly basic way of exploding the error array.
for (const key in errors.errors) {
// console.log('Error index: "' + key + '"');
if (errors.errors.hasOwnProperty(key)) {
if (key === 'group_title') {
this.groupTitleErrors = errors.errors[key];
continue;
}
if (key !== 'group_title') {
// lol dumbest way to explode "transactions.0.something" ever.
transactionIndex = parseInt(key.split('.')[1]);
fieldName = key.split('.')[2];
// set error in this object thing.
// console.log('The errors in key "' + key + '" are');
// console.log(errors.errors[key]);
switch (fieldName) {
case 'amount':
case 'description':
case 'date':
case 'tags':
payload = {index: transactionIndex, field: fieldName, errors: errors.errors[key]};
this.setTransactionError(payload);
break;
case 'budget_id':
payload = {index: transactionIndex, field: 'budget', errors: errors.errors[key]};
this.setTransactionError(payload);
break;
case 'bill_id':
payload = {index: transactionIndex, field: 'bill', errors: errors.errors[key]};
this.setTransactionError(payload);
break;
case 'piggy_bank_id':
payload = {index: transactionIndex, field: 'piggy_bank', errors: errors.errors[key]};
this.setTransactionError(payload);
break;
case 'category_name':
payload = {index: transactionIndex, field: 'category', errors: errors.errors[key]};
this.setTransactionError(payload);
break;
case 'source_name':
case 'source_id':
payload = {index: transactionIndex, field: 'source', errors: errors.errors[key]};
this.setTransactionError(payload);
break;
case 'destination_name':
case 'destination_id':
payload = {index: transactionIndex, field: 'destination', errors: errors.errors[key]};
this.setTransactionError(payload);
break;
case 'foreign_amount':
case 'foreign_currency':
payload = {index: transactionIndex, field: 'foreign_amount', errors: errors.errors[key]};
this.setTransactionError(payload);
break;
}
}
// unique some things
if (typeof this.transactions[transactionIndex] !== 'undefined') {
//this.transactions[transactionIndex].errors.source = Array.from(new Set(this.transactions[transactionIndex].errors.source));
//this.transactions[transactionIndex].errors.destination = Array.from(new Set(this.transactions[transactionIndex].errors.destination));
}
}
}
},
setTransactionError: function (payload) {
this.transactions[payload.index].errors[payload.field] = payload.errors;
},
resetErrors(payload) {
this.transactions[payload.index].errors = lodashClonedeep(getDefaultErrors());
},
}
}
</script>

View File

@ -58,7 +58,6 @@ export default {
descriptions: [],
initialSet: [],
description: this.value,
sendEvent: true
}
},
created() {
@ -87,14 +86,10 @@ export default {
},
watch: {
value: function (value) {
this.sendEvent = false;
this.description = value;
},
description: function (value) {
if (true === this.sendEvent) {
this.$emit('set-field', {field: 'description', index: this.index, value: value});
}
this.sendEvent = true;
this.$emit('set-field', {field: 'description', index: this.index, value: value});
}
},
}

View File

@ -73,6 +73,8 @@
"store_transaction": "Store transaction",
"flash_success": "\u0423\u0441\u043f\u0435\u0445!",
"create_another": "\u0421\u043b\u0435\u0434 \u0441\u044a\u0445\u0440\u0430\u043d\u044f\u0432\u0430\u043d\u0435\u0442\u043e \u0441\u0435 \u0432\u044a\u0440\u043d\u0435\u0442\u0435 \u0442\u0443\u043a, \u0437\u0430 \u0434\u0430 \u0441\u044a\u0437\u0434\u0430\u0434\u0435\u0442\u0435 \u043d\u043e\u0432\u0430.",
"update_transaction": "\u041e\u0431\u043d\u043e\u0432\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u0442\u0430",
"after_update_create_another": "\u0421\u043b\u0435\u0434 \u043e\u0431\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435\u0442\u043e \u0441\u0435 \u0432\u044a\u0440\u043d\u0435\u0442\u0435 \u0442\u0443\u043a, \u0437\u0430 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u0441 \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044f\u0442\u0430.",
"reset_after": "\u0418\u0437\u0447\u0438\u0441\u0442\u0432\u0430\u043d\u0435 \u043d\u0430 \u0444\u043e\u0440\u043c\u0443\u043b\u044f\u0440\u0430 \u0441\u043b\u0435\u0434 \u0438\u0437\u043f\u0440\u0430\u0449\u0430\u043d\u0435",
"bill_paid_on": "Paid on {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "Store transaction",
"flash_success": "\u00dasp\u011b\u0161n\u011b dokon\u010deno!",
"create_another": "After storing, return here to create another one.",
"update_transaction": "Update transaction",
"after_update_create_another": "After updating, return here to continue editing.",
"reset_after": "Reset form after submission",
"bill_paid_on": "Paid on {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "Buchung speichern",
"flash_success": "Geschafft!",
"create_another": "Nach dem Speichern hierher zur\u00fcckkehren, um ein weiteres zu erstellen.",
"update_transaction": "Buchung aktualisieren",
"after_update_create_another": "Nach dem Aktualisieren hierher zur\u00fcckkehren, um weiter zu bearbeiten.",
"reset_after": "Formular nach der \u00dcbermittlung zur\u00fccksetzen",
"bill_paid_on": "Bezahlt am {date}",
"first_split_decides": "Die erste Aufteilung bestimmt den Wert dieses Feldes",

View File

@ -73,6 +73,8 @@
"store_transaction": "Store transaction",
"flash_success": "\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1!",
"create_another": "\u039c\u03b5\u03c4\u03ac \u03c4\u03b7\u03bd \u03b1\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7, \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03c4\u03b5 \u03b5\u03b4\u03ce \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03c3\u03b5\u03c4\u03b5 \u03b1\u03ba\u03cc\u03bc\u03b7 \u03ad\u03bd\u03b1.",
"update_transaction": "\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c3\u03c5\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae\u03c2",
"after_update_create_another": "\u039c\u03b5\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7, \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03c4\u03b5 \u03b5\u03b4\u03ce \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1.",
"reset_after": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c6\u03cc\u03c1\u03bc\u03b1\u03c2 \u03bc\u03b5\u03c4\u03ac \u03c4\u03b7\u03bd \u03c5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae",
"bill_paid_on": "Paid on {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "Store transaction",
"flash_success": "Success!",
"create_another": "After storing, return here to create another one.",
"update_transaction": "Update transaction",
"after_update_create_another": "After updating, return here to continue editing.",
"reset_after": "Reset form after submission",
"bill_paid_on": "Paid on {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "Store transaction",
"flash_success": "Success!",
"create_another": "After storing, return here to create another one.",
"update_transaction": "Update transaction",
"after_update_create_another": "After updating, return here to continue editing.",
"reset_after": "Reset form after submission",
"bill_paid_on": "Paid on {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "Guardar transacci\u00f3n",
"flash_success": "\u00a1Operaci\u00f3n correcta!",
"create_another": "Despu\u00e9s de guardar, vuelve aqu\u00ed para crear otro.",
"update_transaction": "Actualizar transacci\u00f3n",
"after_update_create_another": "Despu\u00e9s de actualizar, vuelve aqu\u00ed para continuar editando.",
"reset_after": "Restablecer formulario despu\u00e9s del env\u00edo",
"bill_paid_on": "Pagado el {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "Store transaction",
"flash_success": "Valmista tuli!",
"create_another": "Tallennuksen j\u00e4lkeen, palaa takaisin luomaan uusi tapahtuma.",
"update_transaction": "P\u00e4ivit\u00e4 tapahtuma",
"after_update_create_another": "P\u00e4ivityksen j\u00e4lkeen, palaa takaisin jatkamaan muokkausta.",
"reset_after": "Tyhjenn\u00e4 lomake l\u00e4hetyksen j\u00e4lkeen",
"bill_paid_on": "Paid on {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "Enregistrer l'op\u00e9ration",
"flash_success": "Super !",
"create_another": "Apr\u00e8s enregistrement, revenir ici pour en cr\u00e9er un nouveau.",
"update_transaction": "Mettre \u00e0 jour l'op\u00e9ration",
"after_update_create_another": "Apr\u00e8s la mise \u00e0 jour, revenir ici pour continuer l'\u00e9dition.",
"reset_after": "R\u00e9initialiser le formulaire apr\u00e8s soumission",
"bill_paid_on": "Pay\u00e9 le {date}",
"first_split_decides": "La premi\u00e8re ventilation d\u00e9termine la valeur de ce champ",

View File

@ -73,6 +73,8 @@
"store_transaction": "Store transaction",
"flash_success": "Siker!",
"create_another": "A t\u00e1rol\u00e1s ut\u00e1n t\u00e9rjen vissza ide \u00faj l\u00e9trehoz\u00e1s\u00e1hoz.",
"update_transaction": "Tranzakci\u00f3 friss\u00edt\u00e9se",
"after_update_create_another": "A friss\u00edt\u00e9s ut\u00e1n t\u00e9rjen vissza ide a szerkeszt\u00e9s folytat\u00e1s\u00e1hoz.",
"reset_after": "\u0170rlap t\u00f6rl\u00e9se a bek\u00fcld\u00e9s ut\u00e1n",
"bill_paid_on": "Paid on {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "Salva transazione",
"flash_success": "Successo!",
"create_another": "Dopo il salvataggio, torna qui per crearne un'altra.",
"update_transaction": "Aggiorna transazione",
"after_update_create_another": "Dopo l'aggiornamento, torna qui per continuare la modifica.",
"reset_after": "Resetta il modulo dopo l'invio",
"bill_paid_on": "Pagata il {date}",
"first_split_decides": "La prima suddivisione determina il valore di questo campo",

View File

@ -73,6 +73,8 @@
"store_transaction": "Store transaction",
"flash_success": "Suksess!",
"create_another": "After storing, return here to create another one.",
"update_transaction": "Update transaction",
"after_update_create_another": "After updating, return here to continue editing.",
"reset_after": "Reset form after submission",
"bill_paid_on": "Paid on {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "Transactie opslaan",
"flash_success": "Gelukt!",
"create_another": "Terug naar deze pagina voor een nieuwe transactie.",
"update_transaction": "Update transactie",
"after_update_create_another": "Na het opslaan terug om door te gaan met wijzigen.",
"reset_after": "Reset formulier na opslaan",
"bill_paid_on": "Betaald op {date}",
"first_split_decides": "De eerste split bepaalt wat hier staat",

View File

@ -73,6 +73,8 @@
"store_transaction": "Zapisz transakcj\u0119",
"flash_success": "Sukces!",
"create_another": "Po zapisaniu wr\u00f3\u0107 tutaj, aby utworzy\u0107 kolejny.",
"update_transaction": "Zaktualizuj transakcj\u0119",
"after_update_create_another": "Po aktualizacji wr\u00f3\u0107 tutaj, aby kontynuowa\u0107 edycj\u0119.",
"reset_after": "Wyczy\u015b\u0107 formularz po zapisaniu",
"bill_paid_on": "Zap\u0142acone {date}",
"first_split_decides": "Pierwszy podzia\u0142 okre\u015bla warto\u015b\u0107 tego pola",

View File

@ -73,6 +73,8 @@
"store_transaction": "Salvar transa\u00e7\u00e3o",
"flash_success": "Sucesso!",
"create_another": "Depois de armazenar, retorne aqui para criar outro.",
"update_transaction": "Atualizar transa\u00e7\u00e3o",
"after_update_create_another": "Depois de atualizar, retorne aqui para continuar editando.",
"reset_after": "Resetar o formul\u00e1rio ap\u00f3s o envio",
"bill_paid_on": "Pago em {date}",
"first_split_decides": "A primeira divis\u00e3o determina o valor deste campo",

View File

@ -73,6 +73,8 @@
"store_transaction": "Guardar transa\u00e7\u00e3o",
"flash_success": "Sucesso!",
"create_another": "Depois de guardar, voltar aqui para criar outra.",
"update_transaction": "Actualizar transac\u00e7\u00e3o",
"after_update_create_another": "Ap\u00f3s a atualiza\u00e7\u00e3o, regresse aqui para continuar a editar.",
"reset_after": "Repor o formul\u00e1rio ap\u00f3s o envio",
"bill_paid_on": "Pago a {date}",
"first_split_decides": "A primeira divis\u00e3o determina o valor deste campo",

View File

@ -73,6 +73,8 @@
"store_transaction": "Store transaction",
"flash_success": "Succes!",
"create_another": "Dup\u0103 stocare, reveni\u021bi aici pentru a crea alta.",
"update_transaction": "Actualiza\u021bi tranzac\u021bia",
"after_update_create_another": "Dup\u0103 actualizare, reveni\u021bi aici pentru a continua editarea.",
"reset_after": "Reseta\u021bi formularul dup\u0103 trimitere",
"bill_paid_on": "Paid on {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e",
"flash_success": "\u0423\u0441\u043f\u0435\u0448\u043d\u043e!",
"create_another": "\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u0441\u044e\u0434\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c.",
"update_transaction": "\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e",
"after_update_create_another": "\u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u0441\u044e\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.",
"reset_after": "\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438",
"bill_paid_on": "\u041e\u043f\u043b\u0430\u0447\u0435\u043d\u043e {date}",
"first_split_decides": "\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438",

View File

@ -73,6 +73,8 @@
"store_transaction": "Ulo\u017ei\u0165 transakciu",
"flash_success": "Hotovo!",
"create_another": "Po ulo\u017een\u00ed sa vr\u00e1ti\u0165 sp\u00e4\u0165 sem a vytvori\u0165 \u010fal\u0161\u00ed.",
"update_transaction": "Upravi\u0165 transakciu",
"after_update_create_another": "Po aktualiz\u00e1cii sa vr\u00e1ti\u0165 sp\u00e4\u0165 a pokra\u010dova\u0165 v \u00faprav\u00e1ch.",
"reset_after": "Po odoslan\u00ed vynulova\u0165 formul\u00e1r",
"bill_paid_on": "Uhraden\u00e9 {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "Store transaction",
"flash_success": "Slutf\u00f6rd!",
"create_another": "Efter sparat, \u00e5terkom hit f\u00f6r att skapa ytterligare en.",
"update_transaction": "Uppdatera transaktion",
"after_update_create_another": "Efter uppdaterat, \u00e5terkom hit f\u00f6r att forts\u00e4tta redigera.",
"reset_after": "\u00c5terst\u00e4ll formul\u00e4r efter inskickat",
"bill_paid_on": "Paid on {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "Store transaction",
"flash_success": "Th\u00e0nh c\u00f4ng!",
"create_another": "Sau khi l\u01b0u tr\u1eef, quay tr\u1edf l\u1ea1i \u0111\u00e2y \u0111\u1ec3 t\u1ea1o m\u1ed9t c\u00e1i kh\u00e1c.",
"update_transaction": "C\u1eadp nh\u1eadt giao d\u1ecbch",
"after_update_create_another": "Sau khi c\u1eadp nh\u1eadt, quay l\u1ea1i \u0111\u00e2y \u0111\u1ec3 ti\u1ebfp t\u1ee5c ch\u1ec9nh s\u1eeda.",
"reset_after": "\u0110\u1eb7t l\u1ea1i m\u1eabu sau khi g\u1eedi",
"bill_paid_on": "Paid on {date}",
"first_split_decides": "The first split determines the value of this field",

View File

@ -73,6 +73,8 @@
"store_transaction": "\u4fdd\u5b58\u4ea4\u6613",
"flash_success": "\u6210\u529f\uff01",
"create_another": "\u4fdd\u5b58\u540e\uff0c\u8fd4\u56de\u6b64\u9875\u9762\u4ee5\u521b\u5efa\u65b0\u8bb0\u5f55",
"update_transaction": "\u66f4\u65b0\u4ea4\u6613",
"after_update_create_another": "\u66f4\u65b0\u540e\uff0c\u8fd4\u56de\u6b64\u9875\u9762\u7ee7\u7eed\u7f16\u8f91\u3002",
"reset_after": "\u63d0\u4ea4\u540e\u91cd\u7f6e\u8868\u5355",
"bill_paid_on": "\u652f\u4ed8\u4e8e {date}",
"first_split_decides": "\u9996\u7b14\u62c6\u5206\u51b3\u5b9a\u6b64\u5b57\u6bb5\u7684\u503c",

View File

@ -73,6 +73,8 @@
"store_transaction": "Store transaction",
"flash_success": "\u6210\u529f\uff01",
"create_another": "After storing, return here to create another one.",
"update_transaction": "Update transaction",
"after_update_create_another": "After updating, return here to continue editing.",
"reset_after": "Reset form after submission",
"bill_paid_on": "Paid on {date}",
"first_split_decides": "The first split determines the value of this field",

19
frontend/src/scss/_variables.scss vendored Normal file
View File

@ -0,0 +1,19 @@
/*!
* _variables.scss
* Copyright (c) 2021 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

File diff suppressed because it is too large Load Diff

40
public/v2/css/app.css vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{297:function(t,s,a){t.exports=a(424)},424: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;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:{name:"table_search",placeholder:"Search",type:"text"}}),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,"3bbb2516",null).exports;a(15);var i=a(18),r={};new Vue({i18n:i,render:function(t){return t(n,{props:r})}}).$mount("#accounts")}},[[297,0,1]]]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{302:function(t,s,a){t.exports=a(428)},428: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;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:{name:"table_search",placeholder:"Search",type:"text"}}),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,"3bbb2516",null).exports;a(16);var i=a(19),r={};new Vue({i18n:i,render:function(t){return t(n,{props:r})}}).$mount("#accounts")}},[[302,0,1]]]);
//# sourceMappingURL=index.js.map

View File

@ -1,2 +1,2 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{298:function(n,e,t){n.exports=t(425)},425: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,"321a1058",null).exports;t(15);var u=t(18),a={};new Vue({i18n:u,render:function(n){return n(s,{props:a})}}).$mount("#accounts_show")}},[[298,0,1]]]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{303:function(n,e,t){n.exports=t(429)},429: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,"321a1058",null).exports;t(16);var u=t(19),a={};new Vue({i18n:u,render:function(n){return n(s,{props:a})}}).$mount("#accounts_show")}},[[303,0,1]]]);
//# sourceMappingURL=show.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{294:function(n,o,p){n.exports=p(295)},295:function(n,o,p){p(15)}},[[294,0,1]]]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{299:function(n,o,p){n.exports=p(300)},300:function(n,o,p){p(16)}},[[299,0,1]]]);
//# sourceMappingURL=empty.js.map

View File

@ -1,2 +1,2 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{296:function(a,e,t){a.exports=t(423)},423: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-parent":"#accordion","data-toggle":"collapse",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-parent":"#accordion","data-toggle":"collapse",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-parent":"#accordion","data-toggle":"collapse",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,"2d2bc9db",null).exports;t(15);var c=t(18),r={};new Vue({i18n:c,render:function(a){return a(i,{props:r})}}).$mount("#newuser")}},[[296,0,1]]]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{301:function(a,e,t){a.exports=t(427)},427: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-parent":"#accordion","data-toggle":"collapse",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-parent":"#accordion","data-toggle":"collapse",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-parent":"#accordion","data-toggle":"collapse",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,"2d2bc9db",null).exports;t(16);var c=t(19),r={};new Vue({i18n:c,render:function(a){return a(i,{props:r})}}).$mount("#newuser")}},[[301,0,1]]]);
//# sourceMappingURL=index.js.map

View File

@ -1,2 +1,2 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{418:function(n,o,w){n.exports=w(419)},419:function(n,o,w){w(420)},420:function(n,o,w){window.$=window.jQuery=w(23)}},[[418,0,1]]]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{423:function(n,o,w){n.exports=w(424)},424:function(n,o,w){w(425)},425:function(n,o,w){window.$=window.jQuery=w(25)}},[[423,0,1]]]);
//# sourceMappingURL=register.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -36,14 +36,14 @@
*/
/*!
* Sizzle CSS Selector Engine v2.3.5
* Sizzle CSS Selector Engine v2.3.6
* https://sizzlejs.com/
*
* Copyright JS Foundation and other contributors
* Released under the MIT license
* https://js.foundation/
*
* Date: 2020-03-14
* Date: 2021-02-16
*/
/*!
@ -53,17 +53,17 @@
*/
/*!
* jQuery JavaScript Library v3.5.1
* jQuery JavaScript Library v3.6.0
* https://jquery.com/
*
* Includes Sizzle.js
* https://sizzlejs.com/
*
* Copyright JS Foundation and other contributors
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2020-05-04T22:49Z
* Date: 2021-03-02T17:08Z
*/
/*!

File diff suppressed because one or more lines are too long