mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
1 line
336 KiB
Plaintext
Executable File
1 line
336 KiB
Plaintext
Executable File
{"version":3,"sources":["webpack:///./src/bootstrap.js","webpack:///./src/components/store/modules/transactions/create.js","webpack:///./src/components/store/modules/transactions/edit.js","webpack:///./src/components/store/modules/dashboard/index.js","webpack:///./src/components/store/modules/root.js","webpack:///./src/components/store/modules/accounts/index.js","webpack:///./src/components/store/index.js","webpack:///./src/i18n.js","webpack:///src/components/transactions/Create.vue","webpack:///./src/components/transactions/Create.vue?21f2","webpack:///./src/components/transactions/Create.vue","webpack:///./src/components/transactions/Create.vue?f6c7","webpack:///./src/pages/transactions/create.js","webpack:///./src/shared/transactions.js","webpack:///./src/components/transactions/TransactionTags.vue?1d59","webpack:///src/components/partials/Alert.vue","webpack:///./src/components/partials/Alert.vue?8ba7","webpack:///./src/components/partials/Alert.vue","webpack:///./src/components/partials/Alert.vue?a628","webpack:///./src/components/transactions/SplitForm.vue?a019","webpack:///src/components/transactions/TransactionDescription.vue","webpack:///./src/components/transactions/TransactionDescription.vue?51f7","webpack:///./src/components/transactions/TransactionDescription.vue","webpack:///./src/components/transactions/TransactionDescription.vue?fdcd","webpack:///src/components/transactions/TransactionDate.vue","webpack:///./src/components/transactions/TransactionDate.vue?3867","webpack:///./src/components/transactions/TransactionDate.vue","webpack:///./src/components/transactions/TransactionDate.vue?1d82","webpack:///src/components/transactions/TransactionBudget.vue","webpack:///./src/components/transactions/TransactionBudget.vue?00ee","webpack:///./src/components/transactions/TransactionBudget.vue","webpack:///./src/components/transactions/TransactionBudget.vue?9242","webpack:///src/components/transactions/TransactionAccount.vue","webpack:///./src/components/transactions/TransactionAccount.vue?5275","webpack:///./src/components/transactions/TransactionAccount.vue","webpack:///./src/components/transactions/TransactionAccount.vue?22f4","webpack:///src/components/transactions/SwitchAccount.vue","webpack:///./src/components/transactions/SwitchAccount.vue?2eca","webpack:///./src/components/transactions/SwitchAccount.vue","webpack:///./src/components/transactions/SwitchAccount.vue?e933","webpack:///src/components/transactions/TransactionAmount.vue","webpack:///./src/components/transactions/TransactionAmount.vue?69ff","webpack:///./src/components/transactions/TransactionAmount.vue","webpack:///./src/components/transactions/TransactionAmount.vue?f2f7","webpack:///src/components/transactions/TransactionForeignAmount.vue","webpack:///./src/components/transactions/TransactionForeignAmount.vue?ff11","webpack:///./src/components/transactions/TransactionForeignAmount.vue","webpack:///./src/components/transactions/TransactionForeignAmount.vue?ac9f","webpack:///src/components/transactions/TransactionForeignCurrency.vue","webpack:///./src/components/transactions/TransactionForeignCurrency.vue?f6a0","webpack:///./src/components/transactions/TransactionForeignCurrency.vue","webpack:///./src/components/transactions/TransactionForeignCurrency.vue?a774","webpack:///src/components/transactions/TransactionCustomDates.vue","webpack:///./src/components/transactions/TransactionCustomDates.vue?c6d3","webpack:///./src/components/transactions/TransactionCustomDates.vue","webpack:///./src/components/transactions/TransactionCustomDates.vue?bc65","webpack:///src/components/transactions/TransactionCategory.vue","webpack:///./src/components/transactions/TransactionCategory.vue?b515","webpack:///./src/components/transactions/TransactionCategory.vue","webpack:///./src/components/transactions/TransactionCategory.vue?dc0d","webpack:///src/components/transactions/TransactionBill.vue","webpack:///./src/components/transactions/TransactionBill.vue?9147","webpack:///./src/components/transactions/TransactionBill.vue","webpack:///./src/components/transactions/TransactionBill.vue?2451","webpack:///./src/components/transactions/TransactionTags.vue?756a","webpack:///src/components/transactions/TransactionTags.vue","webpack:///./src/components/transactions/TransactionTags.vue?c786","webpack:///./src/components/transactions/TransactionTags.vue?80e0","webpack:///./src/components/transactions/TransactionTags.vue","webpack:///src/components/transactions/TransactionPiggyBank.vue","webpack:///./src/components/transactions/TransactionPiggyBank.vue?e9e1","webpack:///./src/components/transactions/TransactionPiggyBank.vue","webpack:///./src/components/transactions/TransactionPiggyBank.vue?e513","webpack:///src/components/transactions/TransactionInternalReference.vue","webpack:///./src/components/transactions/TransactionInternalReference.vue?2fd1","webpack:///./src/components/transactions/TransactionInternalReference.vue","webpack:///./src/components/transactions/TransactionInternalReference.vue?9993","webpack:///src/components/transactions/TransactionExternalUrl.vue","webpack:///./src/components/transactions/TransactionExternalUrl.vue?28f8","webpack:///./src/components/transactions/TransactionExternalUrl.vue","webpack:///./src/components/transactions/TransactionExternalUrl.vue?939d","webpack:///src/components/transactions/TransactionNotes.vue","webpack:///./src/components/transactions/TransactionNotes.vue?3804","webpack:///./src/components/transactions/TransactionNotes.vue","webpack:///./src/components/transactions/TransactionNotes.vue?f936","webpack:///./src/components/transactions/TransactionLinks.vue?47fb","webpack:///src/components/transactions/TransactionLinks.vue","webpack:///./src/components/transactions/TransactionLinks.vue?d196","webpack:///./src/components/transactions/TransactionLinks.vue","webpack:///src/components/transactions/TransactionAttachments.vue","webpack:///./src/components/transactions/TransactionAttachments.vue?3db4","webpack:///./src/components/transactions/TransactionAttachments.vue","webpack:///./src/components/transactions/TransactionAttachments.vue?d909","webpack:///src/components/transactions/TransactionLocation.vue","webpack:///./src/components/transactions/TransactionLocation.vue?9e0a","webpack:///./src/components/transactions/TransactionLocation.vue","webpack:///./src/components/transactions/TransactionLocation.vue?6273","webpack:///./src/components/transactions/SplitForm.vue?99bd","webpack:///src/components/transactions/SplitForm.vue","webpack:///./src/components/transactions/SplitForm.vue","webpack:///src/components/transactions/SplitPills.vue","webpack:///./src/components/transactions/SplitPills.vue?cba2","webpack:///./src/components/transactions/SplitPills.vue","webpack:///./src/components/transactions/SplitPills.vue?21df","webpack:///./src/components/transactions/TransactionGroupTitle.vue?67c1","webpack:///src/components/transactions/TransactionGroupTitle.vue","webpack:///./src/components/transactions/TransactionGroupTitle.vue?5049","webpack:///./src/components/transactions/TransactionGroupTitle.vue"],"names":["window","$","jQuery","require","axios","defaults","headers","common","token","document","head","querySelector","content","console","error","localeToken","localStorage","locale","vuei18n","VueI18n","uiv","Vue","lodashClonedeep","namespaced","state","transactionType","groupTitle","transactions","customDateFields","interest_date","book_date","process_date","due_date","payment_date","invoice_date","defaultTransaction","getDefaultTransaction","defaultErrors","getDefaultErrors","getters","accountToTransaction","sourceAllowedTypes","destinationAllowedTypes","allowedOpposingTypes","actions","mutations","addTransaction","newTransaction","errors","push","resetErrors","payload","index","resetTransactions","setGroupTitle","setCustomDateFields","deleteTransaction","splice","length","setTransactionType","setAllowedOpposingTypes","setAccountToTransaction","updateField","field","value","setTransactionError","setDestinationAllowedTypes","setSourceAllowedTypes","viewRange","start","end","defaultStart","defaultEnd","initialiseStore","context","dispatch","get","then","response","data","attributes","oldViewRange","commit","restoreViewRangeDates","viewRangeStart","Date","viewRangeEnd","viewRangeDefaultStart","viewRangeDefaultEnd","restoreViewRange","getItem","setDatesFromViewRange","today","startOfDay","endOfDay","startOfWeek","weekStartsOn","endOfWeek","startOfMonth","endOfMonth","startOfQuarter","endOfQuarter","getMonth","setMonth","setDate","setStart","setItem","setEnd","setDefaultStart","setDefaultEnd","setViewRange","range","listPageSize","timezone","cacheKey","age","object","JSON","parse","now","parseInt","refreshCacheKey","Array","N","join","Math","random","toString","slice","stringify","setCacheKey","setListPageSize","number","setTimezone","orderMode","activeFilter","setOrderMode","setActiveFilter","Vuex","modules","root","root_store","create","transactions_create","edit","transactions_edit","accounts","accounts_index","dashboard","dashboard_index","strict","process","plugins","currencyPreference","setCurrencyPreference","currencyCode","code","currencyId","id","updateCurrencyPreference","currencyResponse","name","symbol","decimal_places","err","module","exports","documentElement","lang","fallbackLocale","messages","components","SplitForm","Alert","SplitPills","TransactionGroupTitle","created","this","date","getFullYear","getDate","type","toUpperCase","substring","getExpectedSourceTypes","getAccountToTransaction","getCustomFields","errorMessage","successMessage","customFields","enableSubmit","createAnother","resetFormAfter","submittedTransaction","submittedLinks","submittedAttachments","inError","submittedAttCount","groupTitleErrors","returnedGroupId","returnedGroupTitle","computed","watch","finaliseSubmission","methods","addTransactionArray","event","preventDefault","removeTransaction","$store","submitData","post","url","handleSubmissionResponse","group_title","description","result","hasOwnProperty","i","test","journals","transaction_journal_id","Promise","resolve","submitLinks","links","ii","currentLink","outward_id","journalId","inward_id","promises","all","submitAttachments","anyAttachments","selectedAttachment","$t","location","href","handleSubmissionError","parseErrors","submitTransaction","uploadedAttachment","key","storeLocation","storeAccountValue","storeField","storeDate","storeGroupTitle","submitTransactionLinks","submitted","total","received","message","transactionIndex","split","fieldName","convertData","convertSplit","synchronizeAccounts","source_name","destination_name","source_id","destination_id","array","destination_account_name","destination_account_id","source_account_name","source_account_id","toLowerCase","currency_id","amount","budget_id","category_name","category","internal_reference","external_url","notes","external_id","zoom_level","longitude","latitude","tags","order","reconciled","attachments","currentSplit","current","text","piggy_bank_id","bill_id","foreign_currency_id","foreign_amount","source_account_currency_id","destination_account_currency_id","link_type_id","linkTypeParts","inwardId","outwardId","newLink","getAllowedOpposingTypes","defaultDestinationAllowedTypes","defaultSourceAllowedTypes","_vm","_h","$createElement","_c","_self","attrs","_v","on","staticClass","_l","transaction","$event","model","callback","$$v","$set","expression","_e","_s","directives","rawName","domProps","isArray","_i","$$a","$$el","target","$$c","checked","$$i","concat","i18n","props","store","render","createElement","Create","beforeCreate","$mount","source","destination","currency","foreign_currency","custom_dates","budget","bill","piggy_bank","source_account_type","source_account_currency_code","source_account_currency_symbol","destination_account_type","destination_account_currency_code","destination_account_currency_symbol","selectedAttachments","uploadTrigger","clearTrigger","source_account","name_with_balance","currency_name","currency_code","currency_decimal_places","destination_account","___CSS_LOADER_EXPORT___","class","descriptions","initialSet","getACURL","clearDescription","getElementsByTagName","query","lookupDescription","$emit","item","slot","localTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","systemTimeZone","dateStr","parts","timeStr","localDate","ref","composing","budgetList","emitEvent","collectData","getBudgets","parseBudgets","$$selectedVal","prototype","filter","call","options","o","selected","map","_value","multiple","Number","direction","String","Object","default","accountTypes","selectedAccount","accountName","selectedAccountTrigger","types","userSelectedAccount","systemReturnedAccount","clearAccount","lookupAccount","createInitialSet","accountKey","visible","scopedSlots","_u","fn","htmlText","required","sourceCurrencySymbol","destinationCurrencySymbol","fractionDigits","transactionAmount","formatNumber","parseFloat","str","toFixed","currencySymbol","srcCurrencySymbol","dstCurrencySymbol","sourceCurrencyId","destinationCurrencyId","isVisible","selectedCurrency","allCurrencies","selectableCurrencies","dstCurrencyId","srcCurrencyId","lockedCurrency","lockCurrency","getAllCurrencies","filterCurrencies","dateFields","availableFields","dates","interestDate","bookDate","processDate","dueDate","paymentDate","invoiceDate","isDateField","includes","getFieldValue","setFieldValue","enabled","refInFor","categories","clearCategory","lookupCategory","selectedCategory","set","billList","getBills","parseBills","VueTagsInput","autocompleteItems","debounce","currentTag","updateTags","tagList","shortList","initItems","clearTimeout","setTimeout","this$1","newTags","piggyList","getPiggies","parsePiggies","piggy","reference","showField","_m","external_uri","searchResults","include","linkTypes","searching","getLinkTypes","removeLink","getTextForLinkType","linkTypeId","selectTransaction","addToSelected","removeFromSelected","selectLinkType","updateSelected","journal","resetModal","search","parseLinkTypes","inward","outward","linkTypeInward","linkTypeOutward","parseSearch","transaction_group_id","isJournalSelected","getJournalLinkType","link_type_text","NumberFormat","style","format","apply","arguments","staticStyle","linkType","uploads","uploaded","doUpload","$refs","att","selectedFile","createAttachment","filename","attachable_type","attachable_id","uploadAttachment","uploadUri","countAttachment","files","LMap","LTileLayer","LMarker","zoom","center","hasMarker","bounds","marker","prepMap","myMap","mapObject","setObjectLocation","saveZoomLevel","latlng","lat","lng","clearLocation","zoomUpdated","centerUpdated","boundsUpdated","count","allowSwitch","Boolean","splitDate","sourceAccount","destinationAccount","hasMetaFields","requiredFields","TransactionLocation","TransactionAttachments","TransactionNotes","TransactionExternalUrl","TransactionInternalReference","TransactionPiggyBank","TransactionTags","TransactionLinks","TransactionBill","TransactionCategory","TransactionCustomDates","TransactionForeignCurrency","TransactionForeignAmount","TransactionAmount","SwitchAccount","TransactionAccount","TransactionBudget","TransactionDescription","TransactionDate","_g","$listeners","title"],"mappings":"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","file":"/public/js/transactions/create.js","sourcesContent":["/*\n * bootstrap.js\n * Copyright (c) 2021 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// // imports\nimport Vue from 'vue';\nimport VueI18n from 'vue-i18n'\nimport * as uiv from 'uiv';\n\n// export jquery for others scripts to use\nwindow.$ = window.jQuery = require('jquery');\n\n// axios\nwindow.axios = require('axios');\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\n// CSRF\nlet token = document.head.querySelector('meta[name=\"csrf-token\"]');\n\nif (token) {\n window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;\n} else {\n console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');\n}\n\n// locale\nlet localeToken = document.head.querySelector('meta[name=\"locale\"]');\n\nif (localeToken) {\n localStorage.locale = localeToken.content;\n} else {\n localStorage.locale = 'en_US';\n}\n\n// admin stuff\nrequire('jquery-ui');\nrequire('bootstrap'); // bootstrap CSS?\n\nrequire('admin-lte/dist/js/adminlte');\nrequire('overlayscrollbars');\n\n\n// vue\nwindow.vuei18n = VueI18n;\nwindow.uiv = uiv;\nVue.use(vuei18n);\nVue.use(uiv);\nwindow.Vue = Vue;","/*\n * create.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\nconst lodashClonedeep = require('lodash.clonedeep');\n\nimport {getDefaultTransaction, getDefaultErrors} from '../../../../shared/transactions';\n\n// initial state\nconst state = () => ({\n transactionType: 'any',\n groupTitle: '',\n transactions: [],\n customDateFields: {\n interest_date: false,\n book_date: false,\n process_date: false,\n due_date: false,\n payment_date: false,\n invoice_date: false,\n },\n defaultTransaction: getDefaultTransaction(),\n defaultErrors: getDefaultErrors()\n }\n)\n\n\n// getters\nconst getters = {\n transactions: state => {\n return state.transactions;\n },\n defaultErrors: state => {\n return state.defaultErrors;\n },\n groupTitle: state => {\n return state.groupTitle;\n },\n transactionType: state => {\n return state.transactionType;\n },\n accountToTransaction: state => {\n// See reference nr. 1\n // possible API point!!\n return state.accountToTransaction;\n },\n defaultTransaction: state => {\n return state.defaultTransaction;\n },\n sourceAllowedTypes: state => {\n return state.sourceAllowedTypes;\n },\n destinationAllowedTypes: state => {\n return state.destinationAllowedTypes;\n },\n allowedOpposingTypes: state => {\n return state.allowedOpposingTypes;\n },\n customDateFields: state => {\n return state.customDateFields;\n }\n // // `getters` is localized to this module's getters\n // // you can use rootGetters via 4th argument of getters\n // someGetter (state, getters, rootState, rootGetters) {\n // getters.someOtherGetter // -> 'foo/someOtherGetter'\n // rootGetters.someOtherGetter // -> 'someOtherGetter'\n // rootGetters['bar/someOtherGetter'] // -> 'bar/someOtherGetter'\n // },\n\n}\n\n// actions\nconst actions = {}\n\n// mutations\nconst mutations = {\n addTransaction(state) {\n let newTransaction = lodashClonedeep(state.defaultTransaction);\n newTransaction.errors = lodashClonedeep(state.defaultErrors);\n state.transactions.push(newTransaction);\n },\n resetErrors(state, payload) {\n //console.log('resetErrors for index ' + payload.index);\n state.transactions[payload.index].errors = lodashClonedeep(state.defaultErrors);\n },\n resetTransactions(state) {\n state.transactions = [];\n },\n setGroupTitle(state, payload) {\n state.groupTitle = payload.groupTitle;\n },\n setCustomDateFields(state, payload) {\n state.customDateFields = payload;\n },\n deleteTransaction(state, payload) {\n state.transactions.splice(payload.index, 1);\n // console.log('Deleted transaction ' + payload.index);\n // console.log(state.transactions);\n if (0 === state.transactions.length) {\n // console.log('array is empty!');\n }\n },\n setTransactionType(state, transactionType) {\n state.transactionType = transactionType;\n },\n setAllowedOpposingTypes(state, allowedOpposingTypes) {\n state.allowedOpposingTypes = allowedOpposingTypes;\n },\n setAccountToTransaction(state, payload) {\n state.accountToTransaction = payload;\n },\n updateField(state, payload) {\n state.transactions[payload.index][payload.field] = payload.value;\n },\n setTransactionError(state, payload) {\n //console.log('Will set transactions[' + payload.index + '][errors][' + payload.field + '] to ');\n //console.log(payload.errors);\n state.transactions[payload.index].errors[payload.field] = payload.errors;\n },\n setDestinationAllowedTypes(state, payload) {\n // console.log('Destination allowed types was changed!');\n state.destinationAllowedTypes = payload;\n },\n setSourceAllowedTypes(state, payload) {\n state.sourceAllowedTypes = payload;\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n","/*\n * edit.js\n * Copyright (c) 2021 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// initial state\nconst state = () => ({});\n\n\n// getters\nconst getters = {};\n\n// actions\nconst actions = {};\n\n// mutations\nconst mutations = {};\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n","/*\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// initial state\nimport startOfDay from \"date-fns/startOfDay\";\nimport endOfDay from 'date-fns/endOfDay'\nimport startOfWeek from 'date-fns/startOfWeek'\nimport endOfWeek from 'date-fns/endOfWeek'\nimport startOfQuarter from 'date-fns/startOfQuarter';\nimport endOfQuarter from 'date-fns/endOfQuarter';\nimport endOfMonth from \"date-fns/endOfMonth\";\nimport startOfMonth from 'date-fns/startOfMonth';\n\nconst state = () => (\n {\n viewRange: 'default',\n start: null,\n end: null,\n defaultStart: null,\n defaultEnd: null,\n }\n)\n\n\n// getters\nconst getters = {\n start: state => {\n return state.start;\n },\n end: state => {\n return state.end;\n },\n defaultStart: state => {\n return state.defaultStart;\n },\n defaultEnd: state => {\n return state.defaultEnd;\n },\n viewRange: state => {\n return state.viewRange;\n }\n}\n\n// actions\nconst actions = {\n initialiseStore(context) {\n // console.log('initialiseStore for dashboard.');\n\n // restore from local storage:\n context.dispatch('restoreViewRange');\n\n axios.get('./api/v1/preferences/viewRange')\n .then(response => {\n let viewRange = response.data.data.attributes.data;\n let oldViewRange = context.getters.viewRange;\n context.commit('setViewRange', viewRange);\n if (viewRange !== oldViewRange) {\n // console.log('View range changed from \"' + oldViewRange + '\" to \"' + viewRange + '\"');\n context.dispatch('setDatesFromViewRange');\n }\n if (viewRange === oldViewRange) {\n // console.log('Restore view range dates');\n context.dispatch('restoreViewRangeDates');\n }\n }\n ).catch(() => {\n context.commit('setViewRange', '1M');\n context.dispatch('setDatesFromViewRange');\n });\n\n },\n restoreViewRangeDates: function (context) {\n // check local storage first?\n if (localStorage.viewRangeStart) {\n // console.log('view range start set from local storage.');\n context.commit('setStart', new Date(localStorage.viewRangeStart));\n }\n if (localStorage.viewRangeEnd) {\n // console.log('view range end set from local storage.');\n context.commit('setEnd', new Date(localStorage.viewRangeEnd));\n }\n // also set default:\n if (localStorage.viewRangeDefaultStart) {\n // console.log('view range default start set from local storage.');\n // console.log(localStorage.viewRangeDefaultStart);\n context.commit('setDefaultStart', new Date(localStorage.viewRangeDefaultStart));\n }\n if (localStorage.viewRangeDefaultEnd) {\n // console.log('view range default end set from local storage.');\n // console.log(localStorage.viewRangeDefaultEnd);\n context.commit('setDefaultEnd', new Date(localStorage.viewRangeDefaultEnd));\n }\n },\n restoreViewRange: function (context) {\n // console.log('restoreViewRange');\n let viewRange = localStorage.getItem('viewRange');\n if (null !== viewRange) {\n // console.log('restored restoreViewRange ' + viewRange );\n context.commit('setViewRange', viewRange);\n }\n },\n setDatesFromViewRange(context) {\n let start;\n let end;\n let viewRange = context.getters.viewRange;\n let today = new Date;\n // console.log('Will recreate view range on ' + viewRange);\n switch (viewRange) {\n case '1D':\n // today:\n start = startOfDay(today);\n end = endOfDay(today);\n break;\n case '1W':\n // this week:\n start = startOfDay(startOfWeek(today, {weekStartsOn: 1}));\n end = endOfDay(endOfWeek(today, {weekStartsOn: 1}));\n break;\n case '1M':\n // this month:\n start = startOfDay(startOfMonth(today));\n end = endOfDay(endOfMonth(today));\n break;\n case '3M':\n // this quarter\n start = startOfDay(startOfQuarter(today));\n end = endOfDay(endOfQuarter(today));\n break;\n case '6M':\n // this half-year\n if (today.getMonth() <= 5) {\n start = new Date(today);\n start.setMonth(0);\n start.setDate(1);\n start = startOfDay(start);\n end = new Date(today);\n end.setMonth(5);\n end.setDate(30);\n end = endOfDay(start);\n }\n if (today.getMonth() > 5) {\n start = new Date(today);\n start.setMonth(6);\n start.setDate(1);\n start = startOfDay(start);\n end = new Date(today);\n end.setMonth(11);\n end.setDate(31);\n end = endOfDay(start);\n }\n break;\n case '1Y':\n // this year\n start = new Date(today);\n start.setMonth(0);\n start.setDate(1);\n start = startOfDay(start);\n\n end = new Date(today);\n end.setMonth(11);\n end.setDate(31);\n end = endOfDay(end);\n break;\n }\n // console.log('Range is ' + viewRange);\n // console.log('Start is ' + start);\n // console.log('End is ' + end);\n context.commit('setStart', start);\n context.commit('setEnd', end);\n context.commit('setDefaultStart', start);\n context.commit('setDefaultEnd', end);\n }\n}\n\n// mutations\nconst mutations = {\n setStart(state, value) {\n state.start = value;\n window.localStorage.setItem('viewRangeStart', value);\n },\n setEnd(state, value) {\n state.end = value;\n window.localStorage.setItem('viewRangeEnd', value);\n },\n setDefaultStart(state, value) {\n state.defaultStart = value;\n window.localStorage.setItem('viewRangeDefaultStart', value);\n },\n setDefaultEnd(state, value) {\n state.defaultEnd = value;\n window.localStorage.setItem('viewRangeDefaultEnd', value);\n },\n setViewRange(state, range) {\n state.viewRange = range;\n window.localStorage.setItem('viewRange', range);\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n","/*\n * root.js\n * Copyright (c) 2021 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// initial state\nconst state = () => (\n {\n listPageSize: 33,\n timezone: '',\n cacheKey: {\n age: 0,\n value: 'empty',\n },\n }\n)\n\n\n// getters\nconst getters = {\n listPageSize: state => {\n return state.listPageSize;\n },\n timezone: state => {\n // console.log('Wil return ' + state.listPageSize);\n return state.timezone;\n },\n cacheKey: state => {\n return state.cacheKey.value;\n },\n}\n\n// actions\nconst actions = {\n initialiseStore(context) {\n // cache key auto refreshes every day\n // console.log('Now in initialize store.')\n if (localStorage.cacheKey) {\n // console.log('Storage has cache key: ');\n // console.log(localStorage.cacheKey);\n let object = JSON.parse(localStorage.cacheKey);\n if (Date.now() - object.age > 86400000) {\n // console.log('Key is here but is old.');\n context.commit('refreshCacheKey');\n } else {\n // console.log('Cache key from local storage: ' + object.value);\n context.commit('setCacheKey', object);\n }\n } else {\n // console.log('No key need new one.');\n context.commit('refreshCacheKey');\n }\n if (localStorage.listPageSize) {\n state.listPageSize = localStorage.listPageSize;\n context.commit('setListPageSize', {length: localStorage.listPageSize});\n }\n if (!localStorage.listPageSize) {\n axios.get('./api/v1/preferences/listPageSize')\n .then(response => {\n // console.log('from API: listPageSize is ' + parseInt(response.data.data.attributes.data));\n context.commit('setListPageSize', {length: parseInt(response.data.data.attributes.data)});\n }\n );\n }\n if (localStorage.timezone) {\n state.timezone = localStorage.timezone;\n context.commit('setTimezone', {timezone: localStorage.timezone});\n }\n if (!localStorage.timezone) {\n axios.get('./api/v1/configuration/app.timezone')\n .then(response => {\n context.commit('setTimezone', {timezone: response.data.data.value});\n }\n );\n }\n }\n}\n\n// mutations\nconst mutations = {\n refreshCacheKey(state) {\n let age = Date.now();\n let N = 8;\n let cacheKey = Array(N+1).join((Math.random().toString(36)+'00000000000000000').slice(2, 18)).slice(0, N);\n let object = {age: age, value: cacheKey};\n // console.log('Store new key in string JSON');\n // console.log(JSON.stringify(object));\n localStorage.cacheKey = JSON.stringify(object);\n state.cacheKey = {age: age, value: cacheKey};\n // console.log('Refresh: cachekey is now ' + cacheKey);\n },\n setCacheKey(state, payload) {\n // console.log('Stored cache key in localstorage.');\n // console.log(payload);\n // console.log(JSON.stringify(payload));\n localStorage.cacheKey = JSON.stringify(payload);\n state.cacheKey = payload;\n },\n setListPageSize(state, payload) {\n // console.log('Got a payload in setListPageSize');\n // console.log(payload);\n let number = parseInt(payload.length);\n if (0 !== number) {\n state.listPageSize = number;\n localStorage.listPageSize = number;\n }\n },\n setTimezone(state, payload) {\n\n if ('' !== payload.timezone) {\n state.timezone = payload.timezone;\n localStorage.timezone = payload.timezone;\n }\n },\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n","/*\n * index.js\n * Copyright (c) 2021 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// initial state\nconst state = () => (\n {\n orderMode: false,\n activeFilter: 1\n }\n)\n\n\n// getters\nconst getters = {\n orderMode: state => {\n return state.orderMode;\n },\n activeFilter: state => {\n return state.activeFilter;\n }\n}\n\n// actions\nconst actions = {}\n\n// mutations\nconst mutations = {\n setOrderMode(state, payload) {\n state.orderMode = payload;\n },\n setActiveFilter(state, payload) {\n state.activeFilter = payload;\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n","/*\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\nimport Vue from 'vue'\nimport Vuex, {createLogger} from 'vuex'\nimport transactions_create from './modules/transactions/create';\nimport transactions_edit from './modules/transactions/edit';\nimport dashboard_index from './modules/dashboard/index';\nimport root_store from './modules/root';\nimport accounts_index from './modules/accounts/index';\n\nVue.use(Vuex)\nconst debug = process.env.NODE_ENV !== 'production'\n\nexport default new Vuex.Store(\n {\n namespaced: true,\n modules: {\n root: root_store,\n transactions: {\n namespaced: true,\n modules: {\n create: transactions_create,\n edit: transactions_edit\n }\n },\n accounts: {\n namespaced: true,\n modules: {\n index: accounts_index\n },\n },\n dashboard: {\n namespaced: true,\n modules: {\n index: dashboard_index\n }\n }\n },\n strict: debug,\n plugins: debug ? [createLogger()] : [],\n state: {\n currencyPreference: {},\n locale: 'en-US',\n listPageSize: 50\n },\n mutations: {\n setCurrencyPreference(state, payload) {\n state.currencyPreference = payload.payload;\n },\n initialiseStore(state) {\n // console.log('Now in initialiseStore()')\n // if locale in local storage:\n if (localStorage.locale) {\n state.locale = localStorage.locale;\n return;\n }\n\n // set locale from HTML:\n let localeToken = document.head.querySelector('meta[name=\"locale\"]');\n if (localeToken) {\n state.locale = localeToken.content;\n localStorage.locale = localeToken.content;\n }\n }\n },\n getters: {\n currencyCode: state => {\n return state.currencyPreference.code;\n },\n currencyPreference: state => {\n return state.currencyPreference;\n },\n currencyId: state => {\n return state.currencyPreference.id;\n },\n locale: state => {\n return state.locale;\n }\n },\n actions: {\n\n updateCurrencyPreference(context) {\n // console.log('Now in updateCurrencyPreference');\n if (localStorage.currencyPreference) {\n context.commit('setCurrencyPreference', {payload: JSON.parse(localStorage.currencyPreference)});\n return;\n }\n axios.get('./api/v1/currencies/default')\n .then(response => {\n let currencyResponse = {\n id: parseInt(response.data.data.id),\n name: response.data.data.attributes.name,\n symbol: response.data.data.attributes.symbol,\n code: response.data.data.attributes.code,\n decimal_places: parseInt(response.data.data.attributes.decimal_places),\n };\n localStorage.currencyPreference = JSON.stringify(currencyResponse);\n //console.log('getCurrencyPreference from server')\n //console.log(JSON.stringify(currencyResponse));\n context.commit('setCurrencyPreference', {payload: currencyResponse});\n }).catch(err => {\n // console.log('Got error response.');\n console.error(err);\n context.commit('setCurrencyPreference', {\n payload: {\n id: 1,\n name: 'Euro',\n symbol: '€',\n code: 'EUR',\n decimal_places: 2\n }\n });\n });\n\n }\n }\n }\n);","/*\n * i18n.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// Create VueI18n instance with options\nmodule.exports = new vuei18n({\n locale: document.documentElement.lang, // set locale\n fallbackLocale: 'en',\n messages: {\n 'bg': require('./locales/bg.json'),\n 'cs': require('./locales/cs.json'),\n 'de': require('./locales/de.json'),\n 'en': require('./locales/en.json'),\n 'en-us': require('./locales/en.json'),\n 'en-gb': require('./locales/en-gb.json'),\n 'es': require('./locales/es.json'),\n 'el': require('./locales/el.json'),\n 'fr': require('./locales/fr.json'),\n 'hu': require('./locales/hu.json'),\n //'id': require('./locales/id.json'),\n 'it': require('./locales/it.json'),\n 'nl': require('./locales/nl.json'),\n 'nb': require('./locales/nb.json'),\n 'pl': require('./locales/pl.json'),\n 'fi': require('./locales/fi.json'),\n 'pt-br': require('./locales/pt-br.json'),\n 'pt-pt': require('./locales/pt.json'),\n 'ro': require('./locales/ro.json'),\n 'ru': require('./locales/ru.json'),\n //'zh': require('./locales/zh.json'),\n 'zh-tw': require('./locales/zh-tw.json'),\n 'zh-cn': require('./locales/zh-cn.json'),\n 'sk': require('./locales/sk.json'),\n 'sv': require('./locales/sv.json'),\n 'vi': require('./locales/vi.json'),\n }\n});\n","<!--\n - Create.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 <alert :message=\"errorMessage\" type=\"danger\"/>\n <alert :message=\"successMessage\" type=\"success\"/>\n <form @submit=\"submitTransaction\" autocomplete=\"off\">\n <SplitPills :transactions=\"transactions\" :count=\"transactions.length\"/>\n <div class=\"tab-content\">\n <SplitForm\n v-for=\"(transaction, index) in this.transactions\"\n v-bind:key=\"index\"\n :count=\"transactions.length\"\n :custom-fields=\"customFields\"\n :date=\"date\"\n :destination-allowed-types=\"destinationAllowedTypes\"\n :index=\"index\"\n :source-allowed-types=\"sourceAllowedTypes\"\n :submitted-transaction=\"submittedTransaction\"\n :transaction=\"transaction\"\n :transaction-type=\"transactionType\"\n v-on:uploaded-attachments=\"uploadedAttachment($event)\"\n v-on:selected-attachments=\"selectedAttachment($event)\"\n v-on:set-marker-location=\"storeLocation($event)\"\n v-on:set-account=\"storeAccountValue($event)\"\n v-on:set-date=\"storeDate($event)\"\n v-on:set-field=\"storeField($event)\"\n v-on:remove-transaction=\"removeTransaction($event)\"\n />\n </div>\n\n <div class=\"row\">\n <!-- group title -->\n <div class=\"col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\">\n <div v-if=\"transactions.length > 1\" class=\"card\">\n <div class=\"card-body\">\n <div class=\"row\">\n <div class=\"col\">\n <TransactionGroupTitle v-model=\"this.groupTitle\" :errors=\"this.groupTitleErrors\" v-on:set-group-title=\"storeGroupTitle($event)\"/>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\">\n <!-- buttons -->\n <div class=\"card card-primary\">\n <div class=\"card-body\">\n <div class=\"row\">\n <div class=\"col\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n \n </div>\n <button type=\"button\" class=\"btn btn-outline-primary btn-block\" @click=\"addTransactionArray\"><span class=\"far fa-clone\"></span> {{\n $t('firefly.add_another_split')\n }}\n </button>\n </div>\n <div class=\"col\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n \n </div>\n <button :disabled=\"!enableSubmit\" class=\"btn btn-success btn-block\" @click=\"submitTransaction\">\n <span v-if=\"enableSubmit\"><span class=\"far fa-save\"></span> {{ $t('firefly.store_transaction') }}</span>\n <span v-if=\"!enableSubmit\"><span class=\"fas fa-spinner fa-spin\"></span></span>\n </button>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col\">\n \n </div>\n <div class=\"col\">\n <div class=\"form-check\">\n <input id=\"createAnother\" v-model=\"createAnother\" class=\"form-check-input\" type=\"checkbox\">\n <label class=\"form-check-label\" for=\"createAnother\">\n <span class=\"small\">{{ $t('firefly.create_another') }}</span>\n </label>\n </div>\n <div class=\"form-check\">\n <input id=\"resetFormAfter\" v-model=\"resetFormAfter\" :disabled=\"!createAnother\" class=\"form-check-input\" type=\"checkbox\">\n <label class=\"form-check-label\" for=\"resetFormAfter\">\n <span class=\"small\">{{ $t('firefly.reset_after') }}</span>\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </form>\n </div>\n</template>\n\n<script>\nimport Alert from '../partials/Alert';\nimport SplitPills from \"./SplitPills\";\nimport TransactionGroupTitle from \"./TransactionGroupTitle\";\nimport SplitForm from \"./SplitForm\";\nimport {mapGetters, mapMutations} from \"vuex\";\n\nexport default {\n name: \"Create\",\n components: {\n SplitForm,\n Alert,\n SplitPills,\n TransactionGroupTitle,\n },\n /**\n * Grab some stuff from the API, add the first transaction.\n */\n created() {\n // set transaction type:\n let pathName = window.location.pathname;\n let parts = pathName.split('/');\n let type = parts[parts.length - 1];\n\n // set a basic date-time string:\n let date = new Date;\n this.date = [date.getFullYear(), ('0' + (date.getMonth() + 1)).slice(-2), ('0' + date.getDate()).slice(-2)].join('-') + 'T00:00';\n\n //console.log('Date is set to \"' + this.date + '\"');\n\n this.setTransactionType(type[0].toUpperCase() + type.substring(1));\n this.getExpectedSourceTypes();\n this.getAccountToTransaction();\n this.getCustomFields();\n this.addTransaction();\n },\n data() {\n return {\n // error or success message\n errorMessage: '',\n successMessage: '',\n\n // custom fields to show, useful for components:\n customFields: {},\n\n // states for the form (makes sense right)\n enableSubmit: true,\n createAnother: false,\n resetFormAfter: false,\n\n // things the process is done working on (3 phases):\n submittedTransaction: false,\n submittedLinks: false,\n submittedAttachments: -1, // -1 (no attachments), 0 = uploading, 1 = uploaded\n\n // transaction was actually submitted?\n inError: false,\n\n // number of uploaded attachments\n // its an object because we count per transaction journal (which can have multiple attachments)\n // and array doesn't work right.\n submittedAttCount: {},\n\n // errors in the group title:\n groupTitleErrors: [],\n\n // group ID + title once submitted:\n returnedGroupId: 0,\n returnedGroupTitle: '',\n\n // meta data for accounts\n accountToTransaction: {},\n allowedOpposingTypes: {},\n sourceAllowedTypes: ['Asset account', 'Loan', 'Debt', 'Mortgage', 'Revenue account'],\n destinationAllowedTypes: ['Asset account', 'Loan', 'Debt', 'Mortgage', 'Expense account'],\n\n // date not in the store because it was buggy\n date: ''\n }\n },\n computed: {\n /**\n * Grabbed from the store.\n */\n ...mapGetters('transactions/create', ['transactionType', 'transactions', 'groupTitle', 'defaultErrors']),\n ...mapGetters('root', ['listPageSize'])\n },\n watch: {\n submittedAttachments: function () {\n this.finaliseSubmission();\n }\n },\n methods: {\n /**\n * Store related mutators used by this component.\n */\n ...mapMutations('transactions/create',\n [\n 'setGroupTitle',\n 'addTransaction',\n 'deleteTransaction',\n 'setTransactionError',\n 'setTransactionType',\n 'resetErrors',\n 'updateField',\n 'resetTransactions',\n ]\n ),\n addTransactionArray: function (event) {\n event.preventDefault();\n this.addTransaction();\n },\n /**\n * Removes a split from the array.\n */\n removeTransaction: function (payload) {\n // console.log('Triggered to remove transaction ' + payload.index);\n this.$store.commit('transactions/create/deleteTransaction', payload);\n },\n submitData: function (url, data) {\n return axios.post(url, data);\n },\n handleSubmissionResponse: function (response) {\n // console.log('In handleSubmissionResponse()');\n // save some meta data:\n this.returnedGroupId = parseInt(response.data.data.id);\n this.returnedGroupTitle = null === response.data.data.attributes.group_title ? response.data.data.attributes.transactions[0].description : response.data.data.attributes.group_title;\n let journals = [];\n\n // save separate journal ID's (useful ahead in the process):\n let result = response.data.data.attributes.transactions\n for (let i in result) {\n if (result.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n journals.push(parseInt(result[i].transaction_journal_id));\n }\n }\n\n return Promise.resolve({journals: journals});\n },\n submitLinks: function (response, submission) {\n let promises = [];\n // for\n for (let i in response.journals) {\n if (response.journals.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let journalId = response.journals[i];\n let links = submission.transactions[i].links;\n for (let ii in links) {\n if (links.hasOwnProperty(ii) && /^0$|^[1-9]\\d*$/.test(ii) && ii <= 4294967294) {\n let currentLink = links[ii];\n if (0 === currentLink.outward_id) {\n currentLink.outward_id = journalId;\n }\n if (0 === currentLink.inward_id) {\n currentLink.inward_id = journalId;\n }\n promises.push(axios.post('./api/v1/transaction_links', currentLink));\n }\n }\n }\n }\n if (0 === promises.length) {\n return Promise.resolve({response: 'from submitLinks'});\n }\n return Promise.all(promises);\n },\n submitAttachments: function (response, submission) {\n let anyAttachments = false;\n for (let i in response.journals) {\n if (response.journals.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let journalId = response.journals[i];\n let hasAttachments = submission.transactions[i].attachments;\n // console.log('Decided that ' + journalId);\n // console.log(hasAttachments);\n if (hasAttachments) {\n // console.log('upload!');\n this.updateField({index: i, field: 'transaction_journal_id', value: journalId});\n // set upload trigger?\n this.updateField({index: i, field: 'uploadTrigger', value: true});\n //this.transactions[i].uploadTrigger = true;\n anyAttachments = true;\n }\n }\n }\n\n if (true === anyAttachments) {\n this.submittedAttachments = 0;\n }\n\n return Promise.resolve({response: 'from submitAttachments'});\n },\n selectedAttachment: function (payload) {\n this.updateField({index: payload.index, field: 'attachments', value: true});\n },\n finaliseSubmission: function () {\n // console.log('finaliseSubmission');\n if (0 === this.submittedAttachments) {\n // console.log('submittedAttachments = ' + this.submittedAttachments);\n return;\n }\n // console.log('In finaliseSubmission');\n if (false === this.createAnother) {\n window.location.href = (window.previousURL ?? '/') + '?transaction_group_id=' + this.returnedGroupId + '&message=created';\n return;\n }\n //console.log('Is in error?');\n //console.log(this.inError);\n if (false === this.inError) {\n // show message:\n this.errorMessage = '';\n this.successMessage = this.$t('firefly.transaction_stored_link', {ID: this.returnedGroupId, title: this.returnedGroupTitle});\n }\n // console.log('here we are');\n // enable flags:\n this.enableSubmit = true;\n this.submittedTransaction = false;\n this.submittedAttachments = -1;\n\n // reset attachments + errors\n if (!this.resetFormAfter) {\n for (let i in this.transactions) {\n if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n if (this.transactions.hasOwnProperty(i)) {\n //this.\n // console.log('Reset attachment #' + i);\n this.updateField({index: i, field: 'transaction_journal_id', value: 0});\n this.updateField({index: i, field: 'errors', value: this.defaultErrors})\n }\n }\n }\n }\n // reset the form:\n if (this.resetFormAfter) {\n this.resetTransactions();\n this.addTransaction();\n }\n return Promise.resolve({response: 'from finaliseSubmission'});\n },\n handleSubmissionError: function (error) {\n //console.log('in handleSubmissionError');\n // oh noes Firefly III has something to bitch about.\n this.enableSubmit = true;\n\n // but report an error because error:\n this.inError = true;\n this.parseErrors(error.response.data);\n },\n /**\n * Actually submit the transaction to Firefly III. This is a fairly complex beast of a thing because multiple things\n * need to happen in the right order.\n */\n submitTransaction: function (event) {\n event.preventDefault();\n // console.log('submitTransaction()');\n // disable the submit button:\n this.enableSubmit = false;\n\n // assume nothing breaks\n this.inError = false;\n\n // remove old warnings etc.\n this.successMessage = '';\n this.errorMessage = '';\n\n // convert the data so its ready to be submitted:\n const url = './api/v1/transactions';\n const data = this.convertData();\n\n this.submitData(url, data)\n .then(this.handleSubmissionResponse)\n .then(response => {\n return Promise.all([this.submitLinks(response, data), this.submitAttachments(response, data)]);\n }\n )\n .then(this.finaliseSubmission)\n .catch(this.handleSubmissionError);\n\n },\n /**\n * When a attachment component is done uploading it ends up here. We create an object where we count how many\n * attachment components have reported back they're done uploading. Of course if they have nothing to upload\n * they will be pretty fast in reporting they're done.\n *\n * Once the number of components matches the number of splits we know all attachments have been uploaded.\n */\n uploadedAttachment: function (journalId) {\n this.submittedAttachments = 0;\n // console.log('Triggered uploadedAttachment(' + journalId + ')');\n let key = 'str' + journalId;\n this.submittedAttCount[key] = 1;\n let count = Object.keys(this.submittedAttCount).length;\n // console.log('Count is now ' + count);\n // console.log('Length is ' + this.transactions.length);\n if (count === this.transactions.length) {\n // console.log('Got them all!');\n // mark the attachments as stored:\n this.submittedAttachments = 1;\n }\n },\n /**\n * Responds to changed location.\n */\n storeLocation: function (payload) {\n let zoomLevel = payload.hasMarker ? payload.zoomLevel : null;\n let lat = payload.hasMarker ? payload.lat : null;\n let lng = payload.hasMarker ? payload.lng : null;\n this.updateField({index: payload.index, field: 'zoom_level', value: zoomLevel});\n this.updateField({index: payload.index, field: 'latitude', value: lat});\n this.updateField({index: payload.index, field: 'longitude', value: lng});\n },\n /**\n * Responds to changed account.\n */\n storeAccountValue: function (payload) {\n this.updateField({index: payload.index, field: payload.direction + '_account_id', value: payload.id});\n this.updateField({index: payload.index, field: payload.direction + '_account_type', value: payload.type});\n this.updateField({index: payload.index, field: payload.direction + '_account_name', value: payload.name});\n\n this.updateField({index: payload.index, field: payload.direction + '_account_currency_id', value: payload.currency_id});\n this.updateField({index: payload.index, field: payload.direction + '_account_currency_code', value: payload.currency_code});\n this.updateField({index: payload.index, field: payload.direction + '_account_currency_symbol', value: payload.currency_symbol});\n\n //this.calculateTransactionType(payload.index);\n },\n storeField: function (payload) {\n this.updateField(payload);\n },\n storeDate: function (payload) {\n this.date = payload.date;\n },\n storeGroupTitle: function (value) {\n // console.log('set group title: ' + value);\n this.setGroupTitle({groupTitle: value});\n },\n\n /**\n * Submit transaction links.\n */\n submitTransactionLinks(data, response) {\n //console.log('submitTransactionLinks()');\n let promises = [];\n let result = response.data.data.attributes.transactions;\n let total = 0;\n for (let i in data.transactions) {\n if (data.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let submitted = data.transactions[i];\n if (result.hasOwnProperty(i)) {\n // found matching created transaction.\n let received = result[i];\n // grab ID from received, loop \"submitted\" transaction links\n for (let ii in submitted.links) {\n if (submitted.links.hasOwnProperty(ii) && /^0$|^[1-9]\\d*$/.test(ii) && ii <= 4294967294) {\n let currentLink = submitted.links[ii];\n total++;\n if (0 === currentLink.outward_id) {\n currentLink.outward_id = received.transaction_journal_id;\n }\n if (0 === currentLink.inward_id) {\n currentLink.inward_id = received.transaction_journal_id;\n }\n // submit transaction link:\n promises.push(axios.post('./api/v1/transaction_links', currentLink).then(response => {\n// See reference nr. 4\n }));\n }\n }\n }\n }\n }\n if (0 === total) {\n this.submittedLinks = true;\n return;\n }\n Promise.all(promises).then(function () {\n this.submittedLinks = true;\n });\n },\n parseErrors: function (errors) {\n for (let i in this.transactions) {\n if (this.transactions.hasOwnProperty(i)) {\n this.resetErrors({index: i});\n }\n }\n\n this.successMessage = '';\n this.errorMessage = this.$t('firefly.errors_submission');\n if (typeof errors.errors === 'undefined') {\n this.successMessage = '';\n this.errorMessage = errors.message;\n }\n\n let payload;\n let transactionIndex;\n let fieldName;\n\n // fairly basic way of exploding the error array.\n for (const key in errors.errors) {\n // console.log('Error index: \"' + key + '\"');\n if (errors.errors.hasOwnProperty(key)) {\n if (key === 'group_title') {\n this.groupTitleErrors = errors.errors[key];\n continue;\n }\n if (key !== 'group_title') {\n // lol dumbest way to explode \"transactions.0.something\" ever.\n transactionIndex = parseInt(key.split('.')[1]);\n\n fieldName = key.split('.')[2];\n\n // set error in this object thing.\n // console.log('The errors in key \"' + key + '\" are');\n // console.log(errors.errors[key]);\n switch (fieldName) {\n case 'amount':\n case 'description':\n case 'date':\n case 'tags':\n payload = {index: transactionIndex, field: fieldName, errors: errors.errors[key]};\n this.setTransactionError(payload);\n break;\n case 'budget_id':\n payload = {index: transactionIndex, field: 'budget', errors: errors.errors[key]};\n this.setTransactionError(payload);\n break;\n case 'bill_id':\n payload = {index: transactionIndex, field: 'bill', errors: errors.errors[key]};\n this.setTransactionError(payload);\n break;\n case 'piggy_bank_id':\n payload = {index: transactionIndex, field: 'piggy_bank', errors: errors.errors[key]};\n this.setTransactionError(payload);\n break;\n case 'category_name':\n payload = {index: transactionIndex, field: 'category', errors: errors.errors[key]};\n this.setTransactionError(payload);\n break;\n case 'source_name':\n case 'source_id':\n payload = {index: transactionIndex, field: 'source', errors: errors.errors[key]};\n this.setTransactionError(payload);\n break;\n case 'destination_name':\n case 'destination_id':\n payload = {index: transactionIndex, field: 'destination', errors: errors.errors[key]};\n this.setTransactionError(payload);\n break;\n case 'foreign_amount':\n case 'foreign_currency':\n payload = {index: transactionIndex, field: 'foreign_amount', errors: errors.errors[key]};\n this.setTransactionError(payload);\n break;\n }\n }\n // unique some things\n if (typeof this.transactions[transactionIndex] !== 'undefined') {\n //this.transactions[transactionIndex].errors.source = Array.from(new Set(this.transactions[transactionIndex].errors.source));\n //this.transactions[transactionIndex].errors.destination = Array.from(new Set(this.transactions[transactionIndex].errors.destination));\n }\n\n }\n }\n },\n\n /**\n *\n */\n convertData: function () {\n //console.log('now in convertData');\n let data = {\n 'transactions': []\n };\n //console.log('Group title is: \"' + this.groupTitle + '\"');\n if (this.groupTitle.length > 0) {\n data.group_title = this.groupTitle;\n //console.log('1) data.group_title is now \"'+data.group_title+'\"');\n }\n\n for (let i in this.transactions) {\n if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n data.transactions.push(this.convertSplit(i, this.transactions[i]));\n }\n }\n if (data.transactions.length > 1 && '' !== data.transactions[0].description && (null === data.group_title || '' === data.group_title)) {\n data.group_title = data.transactions[0].description;\n //console.log('2) data.group_title is now \"'+data.group_title+'\"');\n }\n\n // depending on the transaction type for this thing, we need to\n // make sure other splits match the data we submit.\n if (data.transactions.length > 1) {\n // console.log('This is a split!');\n data = this.synchronizeAccounts(data);\n }\n\n return data;\n },\n synchronizeAccounts: function (data) {\n // console.log('synchronizeAccounts: ' + this.transactionType);\n // make sure all splits have whatever is in split 0.\n // since its a transfer we can drop the name and use ID's only.\n for (let i in data.transactions) {\n if (data.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n // console.log('now at ' + i);\n\n // for transfers, overrule both the source and the destination:\n if ('Transfer' === this.transactionType) {\n data.transactions[i].source_name = null;\n data.transactions[i].destination_name = null;\n if (i > 0) {\n data.transactions[i].source_id = data.transactions[0].source_id;\n data.transactions[i].destination_id = data.transactions[0].destination_id;\n }\n }\n // for deposits, overrule the destination and ignore the rest.\n if ('Deposit' === this.transactionType) {\n data.transactions[i].destination_name = null;\n if (i > 0) {\n data.transactions[i].destination_id = data.transactions[0].destination_id;\n }\n }\n\n // for withdrawals, overrule the source and ignore the rest.\n if ('Withdrawal' === this.transactionType) {\n data.transactions[i].source_name = null;\n if (i > 0) {\n data.transactions[i].source_id = data.transactions[0].source_id;\n }\n }\n }\n }\n return data;\n\n },\n\n /**\n *\n * @param key\n * @param array\n */\n convertSplit: function (key, array) {\n if ('' === array.destination_account_name) {\n array.destination_account_name = null;\n }\n if (0 === array.destination_account_id) {\n array.destination_account_name = null;\n }\n\n if ('' === array.source_account_name) {\n array.source_account_name = null;\n }\n if (0 === array.source_account_id) {\n array.source_account_id = null;\n }\n\n let currentSplit = {\n // basic\n description: array.description,\n date: this.date,\n type: this.transactionType.toLowerCase(),\n\n // account\n source_id: array.source_account_id ?? null,\n source_name: array.source_account_name ?? null,\n destination_id: array.destination_account_id ?? null,\n destination_name: array.destination_account_name ?? null,\n\n // amount:\n currency_id: array.currency_id,\n amount: array.amount,\n\n // meta data\n budget_id: array.budget_id,\n category_name: array.category,\n\n // optional date fields (6x):\n interest_date: array.interest_date,\n book_date: array.book_date,\n process_date: array.process_date,\n due_date: array.due_date,\n payment_date: array.payment_date,\n invoice_date: array.invoice_date,\n\n // other optional fields:\n internal_reference: array.internal_reference,\n external_url: array.external_url,\n notes: array.notes,\n external_id: array.external_id,\n\n // location:\n zoom_level: array.zoom_level,\n longitude: array.longitude,\n latitude: array.latitude,\n tags: [],\n\n // from thing:\n order: 0,\n reconciled: false,\n attachments: array.attachments,\n };\n\n if (0 !== array.tags.length) {\n for (let i in array.tags) {\n if (array.tags.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n // array.tags\n let current = array.tags[i];\n if (typeof current === 'object' && null !== current) {\n currentSplit.tags.push(current.text);\n // console.log('Add tag \"' + current.text + '\" from object.');\n continue;\n }\n if (typeof current === 'string') {\n currentSplit.tags.push(current);\n // console.log('Add tag \"' + current + '\" from string.');\n continue;\n }\n // console.log('Is neither.');\n }\n }\n }\n // console.log('Current split tags is now: ');\n // console.log(currentSplit.tags);\n\n // bills and piggy banks\n if (0 !== array.piggy_bank_id) {\n currentSplit.piggy_bank_id = array.piggy_bank_id;\n }\n if (0 !== array.bill_id) {\n currentSplit.bill_id = array.bill_id;\n }\n\n // foreign amount:\n if (0 !== array.foreign_currency_id && '' !== array.foreign_amount) {\n currentSplit.foreign_currency_id = array.foreign_currency_id;\n }\n if ('' !== array.foreign_amount) {\n currentSplit.foreign_amount = array.foreign_amount;\n }\n\n // do transaction type\n // let transactionType;\n // let firstSource;\n // let firstDestination;\n\n // get transaction type from first transaction\n //transactionType = this.transactionType ? this.transactionType.toLowerCase() : 'any';\n //console.log('Transaction type is now ' + transactionType);\n // if the transaction type is invalid, might just be that we can deduce it from\n // the presence of a source or destination account\n //firstSource = this.transactions[0].source_account_type;\n //firstDestination = this.transactions[0].destination_account_type;\n //console.log(this.transactions[0].source_account);\n //console.log(this.transactions[0].destination_account);\n //console.log('Type of first source is ' + firstSource);\n //console.log('Type of first destination is ' + firstDestination);\n\n // default to source:\n currentSplit.currency_id = array.source_account_currency_id;\n // if ('any' === transactionType && ['asset', 'Asset account', 'Loan', 'Debt', 'Mortgage'].includes(firstSource)) {\n // transactionType = 'withdrawal';\n // }\n\n if ('Deposit' === this.transactionType) {\n // transactionType = 'deposit';\n currentSplit.currency_id = array.destination_account_currency_id;\n }\n //currentSplit.type = transactionType;\n //console.log('Final type is ' + transactionType);\n\n let links = [];\n for (let i in array.links) {\n if (array.links.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let current = array.links[i];\n let linkTypeParts = current.link_type_id.split('-');\n let inwardId = 'outward' === linkTypeParts[1] ? 0 : parseInt(current.transaction_journal_id);\n let outwardId = 'inward' === linkTypeParts[1] ? 0 : parseInt(current.transaction_journal_id);\n let newLink = {\n link_type_id: parseInt(linkTypeParts[0]),\n inward_id: inwardId,\n outward_id: outwardId,\n };\n links.push(newLink);\n }\n }\n currentSplit.links = links;\n if (null === currentSplit.source_id) {\n delete currentSplit.source_id;\n }\n if (null === currentSplit.source_name) {\n delete currentSplit.source_name;\n }\n if (null === currentSplit.destination_id) {\n delete currentSplit.destination_id;\n }\n if (null === currentSplit.destination_name) {\n delete currentSplit.destination_name;\n }\n\n // console.log('Current split is: ');\n // console.log(currentSplit);\n\n // return it.\n return currentSplit;\n },\n /**\n * Get API value.\n */\n getAllowedOpposingTypes: function () {\n axios.get('./api/v1/configuration/firefly.allowed_opposing_types')\n .then(response => {\n // console.log('opposing types things.');\n // console.log(response.data.data.value);\n this.allowedOpposingTypes = response.data.data.value;\n });\n },\n getExpectedSourceTypes: function () {\n axios.get('./api/v1/configuration/firefly.expected_source_types')\n .then(response => {\n //console.log('getExpectedSourceTypes.');\n this.sourceAllowedTypes = response.data.data.value.source[this.transactionType];\n this.destinationAllowedTypes = response.data.data.value.destination[this.transactionType];\n // console.log('Source allowed types for ' + this.transactionType + ' is: ');\n // console.log(this.sourceAllowedTypes);\n\n // console.log('Destination allowed types for ' + this.transactionType + ' is: ');\n // console.log(this.destinationAllowedTypes);\n\n //this.allowedOpposingTypes = response.data.data.value;\n });\n },\n /**\n * Get API value.\n */\n getAccountToTransaction: function () {\n axios.get('./api/v1/configuration/firefly.account_to_transaction')\n .then(response => {\n this.accountToTransaction = response.data.data.value;\n });\n },\n /**\n * This method grabs the users preferred custom transaction fields. It's used when configuring the\n * custom date selects that will be available. It could be something the component does by itself,\n * thereby separating concerns. This is on my list. If it changes to a per-component thing, then\n * it should be done via the create.js Vue store because multiple components are interested in the\n * user's custom transaction fields.\n */\n getCustomFields: function () {\n axios.get('./api/v1/preferences/transaction_journal_optional_fields').then(response => {\n this.customFields = response.data.data.attributes.data;\n });\n },\n setDestinationAllowedTypes: function (value) {\n // console.log('Create::setDestinationAllowedTypes');\n // console.log(value);\n if (0 === value.length) {\n this.destinationAllowedTypes = this.defaultDestinationAllowedTypes;\n //console.log('empty so back to defaults');\n return;\n }\n this.destinationAllowedTypes = value;\n },\n setSourceAllowedTypes(value) {\n // console.log('Create::setSourceAllowedTypes');\n // console.log(value);\n if (0 === value.length) {\n this.sourceAllowedTypes = this.defaultSourceAllowedTypes;\n // console.log('empty so back to defaults');\n return;\n }\n this.sourceAllowedTypes = value;\n }\n },\n\n}\n</script>\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Create.vue?vue&type=template&id=273ba2fd&\"\nimport script from \"./Create.vue?vue&type=script&lang=js&\"\nexport * from \"./Create.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('alert',{attrs:{\"message\":_vm.errorMessage,\"type\":\"danger\"}}),_vm._v(\" \"),_c('alert',{attrs:{\"message\":_vm.successMessage,\"type\":\"success\"}}),_vm._v(\" \"),_c('form',{attrs:{\"autocomplete\":\"off\"},on:{\"submit\":_vm.submitTransaction}},[_c('SplitPills',{attrs:{\"transactions\":_vm.transactions,\"count\":_vm.transactions.length}}),_vm._v(\" \"),_c('div',{staticClass:\"tab-content\"},_vm._l((this.transactions),function(transaction,index){return _c('SplitForm',{key:index,attrs:{\"count\":_vm.transactions.length,\"custom-fields\":_vm.customFields,\"date\":_vm.date,\"destination-allowed-types\":_vm.destinationAllowedTypes,\"index\":index,\"source-allowed-types\":_vm.sourceAllowedTypes,\"submitted-transaction\":_vm.submittedTransaction,\"transaction\":transaction,\"transaction-type\":_vm.transactionType},on:{\"uploaded-attachments\":function($event){return _vm.uploadedAttachment($event)},\"selected-attachments\":function($event){return _vm.selectedAttachment($event)},\"set-marker-location\":function($event){return _vm.storeLocation($event)},\"set-account\":function($event){return _vm.storeAccountValue($event)},\"set-date\":function($event){return _vm.storeDate($event)},\"set-field\":function($event){return _vm.storeField($event)},\"remove-transaction\":function($event){return _vm.removeTransaction($event)}}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\"},[(_vm.transactions.length > 1)?_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('TransactionGroupTitle',{attrs:{\"errors\":this.groupTitleErrors},on:{\"set-group-title\":function($event){return _vm.storeGroupTitle($event)}},model:{value:(this.groupTitle),callback:function ($$v) {_vm.$set(this, \"groupTitle\", $$v)},expression:\"this.groupTitle\"}})],1)])])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\"},[_c('div',{staticClass:\"card card-primary\"},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-outline-primary btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.addTransactionArray}},[_c('span',{staticClass:\"far fa-clone\"}),_vm._v(\" \"+_vm._s(_vm.$t('firefly.add_another_split'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-success btn-block\",attrs:{\"disabled\":!_vm.enableSubmit},on:{\"click\":_vm.submitTransaction}},[(_vm.enableSubmit)?_c('span',[_c('span',{staticClass:\"far fa-save\"}),_vm._v(\" \"+_vm._s(_vm.$t('firefly.store_transaction')))]):_vm._e(),_vm._v(\" \"),(!_vm.enableSubmit)?_c('span',[_c('span',{staticClass:\"fas fa-spinner fa-spin\"})]):_vm._e()])])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_vm._v(\"\\n \\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"form-check\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.createAnother),expression:\"createAnother\"}],staticClass:\"form-check-input\",attrs:{\"id\":\"createAnother\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.createAnother)?_vm._i(_vm.createAnother,null)>-1:(_vm.createAnother)},on:{\"change\":function($event){var $$a=_vm.createAnother,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.createAnother=$$a.concat([$$v]))}else{$$i>-1&&(_vm.createAnother=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.createAnother=$$c}}}}),_vm._v(\" \"),_c('label',{staticClass:\"form-check-label\",attrs:{\"for\":\"createAnother\"}},[_c('span',{staticClass:\"small\"},[_vm._v(_vm._s(_vm.$t('firefly.create_another')))])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-check\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.resetFormAfter),expression:\"resetFormAfter\"}],staticClass:\"form-check-input\",attrs:{\"id\":\"resetFormAfter\",\"disabled\":!_vm.createAnother,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.resetFormAfter)?_vm._i(_vm.resetFormAfter,null)>-1:(_vm.resetFormAfter)},on:{\"change\":function($event){var $$a=_vm.resetFormAfter,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.resetFormAfter=$$a.concat([$$v]))}else{$$i>-1&&(_vm.resetFormAfter=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.resetFormAfter=$$c}}}}),_vm._v(\" \"),_c('label',{staticClass:\"form-check-label\",attrs:{\"for\":\"resetFormAfter\"}},[_c('span',{staticClass:\"small\"},[_vm._v(_vm._s(_vm.$t('firefly.reset_after')))])])])])])])])])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * create.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\nimport store from \"../../components/store\";\nimport Create from \"../../components/transactions/Create\";\nimport Vue from \"vue\";\n\nrequire('../../bootstrap');\n\nVue.config.productionTip = false;\n// i18n\nlet i18n = require('../../i18n');\n\n// See reference nr. 3\n// See reference nr. 4\n// See reference nr. 5\n// See reference nr. 6\n// See reference nr. 7\n\nlet props = {};\nconst app = new Vue({\n i18n,\n store,\n render(createElement) {\n return createElement(Create, {props: props});\n },\n beforeCreate() {\n this.$store.dispatch('root/initialiseStore');\n this.$store.commit('initialiseStore');\n this.$store.dispatch('updateCurrencyPreference');\n },\n }).$mount('#transactions_create');\n","/*\n * transactions.js\n * Copyright (c) 2021 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\nexport function getDefaultErrors() {\n return {\n description: [],\n amount: [],\n source: [],\n destination: [],\n currency: [],\n foreign_currency: [],\n foreign_amount: [],\n date: [],\n custom_dates: [],\n budget: [],\n category: [],\n bill: [],\n tags: [],\n piggy_bank: [],\n internal_reference: [],\n external_url: [],\n notes: [],\n location: []\n };\n}\n\nexport function getDefaultTransaction() {\n return {\n // basic\n description: '',\n transaction_journal_id: 0,\n // accounts:\n source_account_id: null,\n source_account_name: null,\n source_account_type: null,\n\n source_account_currency_id: null,\n source_account_currency_code: null,\n source_account_currency_symbol: null,\n\n destination_account_id: null,\n destination_account_name: null,\n destination_account_type: null,\n\n destination_account_currency_id: null,\n destination_account_currency_code: null,\n destination_account_currency_symbol: null,\n attachments: false,\n selectedAttachments: false,\n uploadTrigger: false,\n clearTrigger: false,\n\n source_account: {\n id: 0,\n name: \"\",\n name_with_balance: \"\",\n type: \"\",\n currency_id: 0,\n currency_name: '',\n currency_code: '',\n currency_decimal_places: 2\n },\n destination_account: {\n id: 0,\n name: \"\",\n type: \"\",\n currency_id: 0,\n currency_name: '',\n currency_code: '',\n currency_decimal_places: 2\n },\n\n // amount:\n amount: '',\n currency_id: 0,\n foreign_amount: '',\n foreign_currency_id: 0,\n\n // meta data\n category: null,\n budget_id: 0,\n bill_id: 0,\n piggy_bank_id: 0,\n tags: [],\n\n // optional date fields (6x):\n interest_date: null,\n book_date: null,\n process_date: null,\n due_date: null,\n payment_date: null,\n invoice_date: null,\n\n // optional other fields:\n internal_reference: null,\n external_url: null,\n external_id: null,\n notes: null,\n\n // transaction links:\n links: [],\n // location:\n zoom_level: null,\n longitude: null,\n latitude: null,\n\n // error handling\n errors: {},\n }\n}\n\nexport function toW3CString(date) {\n // https://gist.github.com/tristanlins/6585391\n let year = date.getFullYear();\n let month = date.getMonth();\n month++;\n if (month < 10) {\n month = '0' + month;\n }\n let day = date.getDate();\n if (day < 10) {\n day = '0' + day;\n }\n let hours = date.getHours();\n if (hours < 10) {\n hours = '0' + hours;\n }\n let minutes = date.getMinutes();\n if (minutes < 10) {\n minutes = '0' + minutes;\n }\n let seconds = date.getSeconds();\n if (seconds < 10) {\n seconds = '0' + seconds;\n }\n let offset = -date.getTimezoneOffset();\n let offsetHours = Math.abs(Math.floor(offset / 60));\n let offsetMinutes = Math.abs(offset) - offsetHours * 60;\n if (offsetHours < 10) {\n offsetHours = '0' + offsetHours;\n }\n if (offsetMinutes < 10) {\n offsetMinutes = '0' + offsetMinutes;\n }\n let offsetSign = '+';\n if (offset < 0) {\n offsetSign = '-';\n }\n return year + '-' + month + '-' + day +\n 'T' + hours + ':' + minutes + ':' + seconds +\n offsetSign + offsetHours + ':' + offsetMinutes;\n}","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vue-tags-input{display:block;max-width:100%!important}.ti-input,.vue-tags-input{border-radius:.25rem;width:100%}.ti-input{max-width:100%}.ti-new-tag-input{font-size:1rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/transactions/TransactionTags.vue\"],\"names\":[],\"mappings\":\"AAsHA,gBAGA,aAAA,CADA,wBAGA,CAEA,0BAHA,oBAAA,CAHA,UAUA,CAJA,UAEA,cAEA,CAEA,kBACA,cACA\",\"sourcesContent\":[\"<!--\\n - TransactionTags.vue\\n - Copyright (c) 2021 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 class=\\\"form-group\\\">\\n <div class=\\\"text-xs d-none d-lg-block d-xl-block\\\">\\n {{ $t('firefly.tags') }}\\n </div>\\n <div class=\\\"input-group\\\">\\n <vue-tags-input\\n v-model=\\\"currentTag\\\"\\n :add-only-from-autocomplete=\\\"false\\\"\\n :autocomplete-items=\\\"autocompleteItems\\\"\\n :tags=\\\"tags\\\"\\n :title=\\\"$t('firefly.tags')\\\"\\n v-bind:placeholder=\\\"$t('firefly.tags')\\\"\\n @tags-changed=\\\"newTags => this.tags = newTags\\\"\\n />\\n </div>\\n <span v-if=\\\"errors.length > 0\\\">\\n <span v-for=\\\"error in errors\\\" class=\\\"text-danger small\\\">{{ error }}<br/></span>\\n </span>\\n </div>\\n</template>\\n\\n<script>\\nimport VueTagsInput from \\\"@johmun/vue-tags-input\\\";\\nimport axios from \\\"axios\\\";\\n\\nexport default {\\n name: \\\"TransactionTags\\\",\\n components: {\\n VueTagsInput\\n },\\n props: ['value', 'index', 'errors'],\\n data() {\\n return {\\n autocompleteItems: [],\\n debounce: null,\\n tags: [],\\n currentTag: '',\\n updateTags: true, // the idea is that this is always true, except when the tags-function sets the value.\\n tagList: this.value,\\n };\\n },\\n created() {\\n let tags = [];\\n for (let i in this.value) {\\n if (this.value.hasOwnProperty(i) && /^0$|^[1-9]\\\\d*$/.test(i) && i <= 4294967294) {\\n tags.push({text: this.value[i]});\\n }\\n }\\n this.updateTags = false;\\n this.tags = tags;\\n },\\n watch: {\\n 'currentTag': 'initItems',\\n value: function (value) {\\n this.tagList = value;\\n },\\n tagList: function (value) {\\n // console.log('watch tagList');\\n this.$emit('set-field', {field: 'tags', index: this.index, value: value});\\n this.updateTags = false;\\n this.tags = value;\\n },\\n tags: function (value) {\\n if (this.updateTags) {\\n let shortList = [];\\n for (let key in value) {\\n if (value.hasOwnProperty(key)) {\\n shortList.push({text: value[key].text});\\n }\\n }\\n this.tagList = shortList;\\n }\\n this.updateTags = true;\\n }\\n },\\n methods: {\\n initItems() {\\n if (this.currentTag.length < 2) {\\n return;\\n }\\n const url = document.getElementsByTagName('base')[0].href + `api/v1/autocomplete/tags?query=${this.currentTag}`;\\n\\n clearTimeout(this.debounce);\\n this.debounce = setTimeout(() => {\\n axios.get(url).then(response => {\\n this.autocompleteItems = response.data.map(item => {\\n return {text: item.tag};\\n });\\n }).catch(() => console.warn('Oh. Something went wrong loading tags.'));\\n }, 300);\\n },\\n },\\n\\n\\n}\\n</script>\\n<style>\\n.vue-tags-input {\\n width: 100%;\\n max-width: 100% !important;\\n display: block;\\n border-radius: 0.25rem;\\n}\\n\\n.ti-input {\\n border-radius: 0.25rem;\\n max-width: 100%;\\n width: 100%;\\n}\\n\\n.ti-new-tag-input {\\n font-size: 1rem;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","<!--\n - Alert.vue\n - Copyright (c) 2021 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<template>\n <div v-if=\"message.length > 0\" :class=\"'alert alert-' + type + ' alert-dismissible'\">\n <button aria-hidden=\"true\" class=\"close\" data-dismiss=\"alert\" type=\"button\">×</button>\n <h5>\n <span v-if=\"'danger' === type\" class=\"icon fas fa-ban\"></span>\n <span v-if=\"'success' === type\" class=\"icon fas fa-thumbs-up\"></span>\n <span v-if=\"'danger' === type\">{{ $t(\"firefly.flash_error\") }}</span>\n <span v-if=\"'success' === type\">{{ $t(\"firefly.flash_success\") }}</span>\n </h5>\n <span v-html=\"message\"></span>\n </div>\n</template>\n<script>\nexport default {\n name: \"Alert\",\n props: ['message', 'type']\n}\n</script>","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Alert.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Alert.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Alert.vue?vue&type=template&id=45eef68c&\"\nimport script from \"./Alert.vue?vue&type=script&lang=js&\"\nexport * from \"./Alert.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.message.length > 0)?_c('div',{class:'alert alert-' + _vm.type + ' alert-dismissible'},[_c('button',{staticClass:\"close\",attrs:{\"aria-hidden\":\"true\",\"data-dismiss\":\"alert\",\"type\":\"button\"}},[_vm._v(\"×\")]),_vm._v(\" \"),_c('h5',[('danger' === _vm.type)?_c('span',{staticClass:\"icon fas fa-ban\"}):_vm._e(),_vm._v(\" \"),('success' === _vm.type)?_c('span',{staticClass:\"icon fas fa-thumbs-up\"}):_vm._e(),_vm._v(\" \"),('danger' === _vm.type)?_c('span',[_vm._v(_vm._s(_vm.$t(\"firefly.flash_error\")))]):_vm._e(),_vm._v(\" \"),('success' === _vm.type)?_c('span',[_vm._v(_vm._s(_vm.$t(\"firefly.flash_success\")))]):_vm._e()]),_vm._v(\" \"),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.message)}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:'tab-pane' + (0 === _vm.index ? ' active' : ''),attrs:{\"id\":'split_' + _vm.index}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-header\"},[_c('h3',{staticClass:\"card-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.basic_journal_information'))+\"\\n \"),(_vm.count > 1)?_c('span',[_vm._v(\"(\"+_vm._s(_vm.index + 1)+\" / \"+_vm._s(_vm.count)+\") \")]):_vm._e()]),_vm._v(\" \"),(_vm.count>1)?_c('div',{staticClass:\"card-tools\"},[_c('button',{staticClass:\"btn btn-danger btn-xs\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.removeTransaction}},[_c('span',{staticClass:\"fas fa-trash-alt\"})])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('TransactionDescription',_vm._g({attrs:{\"errors\":_vm.transaction.errors.description,\"index\":_vm.index},model:{value:(_vm.transaction.description),callback:function ($$v) {_vm.$set(_vm.transaction, \"description\", $$v)},expression:\"transaction.description\"}},_vm.$listeners))],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xl-5 col-lg-5 col-md-10 col-sm-12 col-xs-12\"},[_c('TransactionAccount',_vm._g({attrs:{\"destination-allowed-types\":_vm.destinationAllowedTypes,\"errors\":_vm.transaction.errors.source,\"index\":_vm.index,\"source-allowed-types\":_vm.sourceAllowedTypes,\"transaction-type\":_vm.transactionType,\"direction\":\"source\"},model:{value:(_vm.sourceAccount),callback:function ($$v) {_vm.sourceAccount=$$v},expression:\"sourceAccount\"}},_vm.$listeners))],1),_vm._v(\" \"),_c('div',{staticClass:\"col-xl-2 col-lg-2 col-md-2 col-sm-12 text-center d-none d-sm-block\"},[(0 === _vm.index && _vm.allowSwitch)?_c('SwitchAccount',_vm._g({attrs:{\"index\":_vm.index,\"transaction-type\":_vm.transactionType}},_vm.$listeners)):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12\"},[_c('TransactionAccount',_vm._g({attrs:{\"destination-allowed-types\":_vm.destinationAllowedTypes,\"errors\":_vm.transaction.errors.destination,\"index\":_vm.index,\"transaction-type\":_vm.transactionType,\"source-allowed-types\":_vm.sourceAllowedTypes,\"direction\":\"destination\"},model:{value:(_vm.destinationAccount),callback:function ($$v) {_vm.destinationAccount=$$v},expression:\"destinationAccount\"}},_vm.$listeners))],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xl-5 col-lg-5 col-md-10 col-sm-12 col-xs-12\"},[_c('TransactionAmount',_vm._g({attrs:{\"amount\":_vm.transaction.amount,\"destination-currency-symbol\":this.transaction.destination_account_currency_symbol,\"errors\":_vm.transaction.errors.amount,\"index\":_vm.index,\"source-currency-symbol\":this.transaction.source_account_currency_symbol,\"transaction-type\":this.transactionType}},_vm.$listeners))],1),_vm._v(\" \"),_c('div',{staticClass:\"col-xl-2 col-lg-2 col-md-2 col-sm-12 text-center d-none d-sm-block\"},[_c('TransactionForeignCurrency',_vm._g({attrs:{\"destination-currency-id\":this.transaction.destination_account_currency_id,\"index\":_vm.index,\"selected-currency-id\":this.transaction.foreign_currency_id,\"source-currency-id\":this.transaction.source_account_currency_id,\"transaction-type\":this.transactionType},model:{value:(_vm.transaction.foreign_currency_id),callback:function ($$v) {_vm.$set(_vm.transaction, \"foreign_currency_id\", $$v)},expression:\"transaction.foreign_currency_id\"}},_vm.$listeners))],1),_vm._v(\" \"),_c('div',{staticClass:\"col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12\"},[_c('TransactionForeignAmount',_vm._g({attrs:{\"destination-currency-id\":this.transaction.destination_account_currency_id,\"errors\":_vm.transaction.errors.foreign_amount,\"index\":_vm.index,\"selected-currency-id\":this.transaction.foreign_currency_id,\"source-currency-id\":this.transaction.source_account_currency_id,\"transaction-type\":this.transactionType},model:{value:(_vm.transaction.foreign_amount),callback:function ($$v) {_vm.$set(_vm.transaction, \"foreign_amount\", $$v)},expression:\"transaction.foreign_amount\"}},_vm.$listeners))],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12\"},[_c('TransactionDate',_vm._g({attrs:{\"date\":_vm.splitDate,\"errors\":_vm.transaction.errors.date,\"index\":_vm.index}},_vm.$listeners))],1),_vm._v(\" \"),_c('div',{staticClass:\"col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12 offset-xl-2 offset-lg-2\"},[_c('TransactionCustomDates',_vm._g({attrs:{\"book-date\":_vm.transaction.book_date,\"custom-fields\":_vm.customFields,\"due-date\":_vm.transaction.due_date,\"errors\":_vm.transaction.errors.custom_dates,\"index\":_vm.index,\"interest-date\":_vm.transaction.interest_date,\"invoice-date\":_vm.transaction.invoice_date,\"payment-date\":_vm.transaction.payment_date,\"process-date\":_vm.transaction.process_date},on:{\"update:customFields\":function($event){_vm.customFields=$event},\"update:custom-fields\":function($event){_vm.customFields=$event}}},_vm.$listeners))],1)])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-header\"},[_c('h3',{staticClass:\"card-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.transaction_journal_meta'))+\"\\n \"),(_vm.count > 1)?_c('span',[_vm._v(\"(\"+_vm._s(_vm.index + 1)+\" / \"+_vm._s(_vm.count)+\") \")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\"},[(!('Transfer' === _vm.transactionType || 'Deposit' === _vm.transactionType))?_c('TransactionBudget',_vm._g({attrs:{\"errors\":_vm.transaction.errors.budget,\"index\":_vm.index},model:{value:(_vm.transaction.budget_id),callback:function ($$v) {_vm.$set(_vm.transaction, \"budget_id\", $$v)},expression:\"transaction.budget_id\"}},_vm.$listeners)):_vm._e(),_vm._v(\" \"),_c('TransactionCategory',_vm._g({attrs:{\"errors\":_vm.transaction.errors.category,\"index\":_vm.index},model:{value:(_vm.transaction.category),callback:function ($$v) {_vm.$set(_vm.transaction, \"category\", $$v)},expression:\"transaction.category\"}},_vm.$listeners))],1),_vm._v(\" \"),_c('div',{staticClass:\"col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\"},[(!('Transfer' === _vm.transactionType || 'Deposit' === _vm.transactionType))?_c('TransactionBill',_vm._g({attrs:{\"errors\":_vm.transaction.errors.bill,\"index\":_vm.index},model:{value:(_vm.transaction.bill_id),callback:function ($$v) {_vm.$set(_vm.transaction, \"bill_id\", $$v)},expression:\"transaction.bill_id\"}},_vm.$listeners)):_vm._e(),_vm._v(\" \"),_c('TransactionTags',_vm._g({attrs:{\"errors\":_vm.transaction.errors.tags,\"index\":_vm.index},model:{value:(_vm.transaction.tags),callback:function ($$v) {_vm.$set(_vm.transaction, \"tags\", $$v)},expression:\"transaction.tags\"}},_vm.$listeners)),_vm._v(\" \"),(!('Withdrawal' === _vm.transactionType || 'Deposit' === _vm.transactionType))?_c('TransactionPiggyBank',_vm._g({attrs:{\"errors\":_vm.transaction.errors.piggy_bank,\"index\":_vm.index},model:{value:(_vm.transaction.piggy_bank_id),callback:function ($$v) {_vm.$set(_vm.transaction, \"piggy_bank_id\", $$v)},expression:\"transaction.piggy_bank_id\"}},_vm.$listeners)):_vm._e()],1)])])])])]),_vm._v(\" \"),(_vm.hasMetaFields)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-header\"},[_c('h3',{staticClass:\"card-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.transaction_journal_extra'))+\"\\n \"),(_vm.count > 1)?_c('span',[_vm._v(\"(\"+_vm._s(_vm.index + 1)+\" / \"+_vm._s(_vm.count)+\") \")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\"},[_c('TransactionInternalReference',_vm._g({attrs:{\"custom-fields\":_vm.customFields,\"errors\":_vm.transaction.errors.internal_reference,\"index\":_vm.index},on:{\"update:customFields\":function($event){_vm.customFields=$event},\"update:custom-fields\":function($event){_vm.customFields=$event}},model:{value:(_vm.transaction.internal_reference),callback:function ($$v) {_vm.$set(_vm.transaction, \"internal_reference\", $$v)},expression:\"transaction.internal_reference\"}},_vm.$listeners)),_vm._v(\" \"),_c('TransactionExternalUrl',_vm._g({attrs:{\"custom-fields\":_vm.customFields,\"errors\":_vm.transaction.errors.external_url,\"index\":_vm.index},on:{\"update:customFields\":function($event){_vm.customFields=$event},\"update:custom-fields\":function($event){_vm.customFields=$event}},model:{value:(_vm.transaction.external_url),callback:function ($$v) {_vm.$set(_vm.transaction, \"external_url\", $$v)},expression:\"transaction.external_url\"}},_vm.$listeners)),_vm._v(\" \"),_c('TransactionNotes',_vm._g({attrs:{\"custom-fields\":_vm.customFields,\"errors\":_vm.transaction.errors.notes,\"index\":_vm.index},on:{\"update:customFields\":function($event){_vm.customFields=$event},\"update:custom-fields\":function($event){_vm.customFields=$event}},model:{value:(_vm.transaction.notes),callback:function ($$v) {_vm.$set(_vm.transaction, \"notes\", $$v)},expression:\"transaction.notes\"}},_vm.$listeners))],1),_vm._v(\" \"),_c('div',{staticClass:\"col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\"},[_c('TransactionAttachments',_vm._g({ref:\"attachments\",attrs:{\"custom-fields\":_vm.customFields,\"index\":_vm.index,\"transaction_journal_id\":_vm.transaction.transaction_journal_id,\"upload-trigger\":_vm.transaction.uploadTrigger,\"clear-trigger\":_vm.transaction.clearTrigger},on:{\"update:customFields\":function($event){_vm.customFields=$event},\"update:custom-fields\":function($event){_vm.customFields=$event}},model:{value:(_vm.transaction.attachments),callback:function ($$v) {_vm.$set(_vm.transaction, \"attachments\", $$v)},expression:\"transaction.attachments\"}},_vm.$listeners)),_vm._v(\" \"),_c('TransactionLocation',_vm._g({attrs:{\"custom-fields\":_vm.customFields,\"errors\":_vm.transaction.errors.location,\"index\":_vm.index},on:{\"update:customFields\":function($event){_vm.customFields=$event},\"update:custom-fields\":function($event){_vm.customFields=$event}},model:{value:(_vm.transaction.location),callback:function ($$v) {_vm.$set(_vm.transaction, \"location\", $$v)},expression:\"transaction.location\"}},_vm.$listeners)),_vm._v(\" \"),_c('TransactionLinks',_vm._g({attrs:{\"custom-fields\":_vm.customFields,\"index\":_vm.index},on:{\"update:customFields\":function($event){_vm.customFields=$event},\"update:custom-fields\":function($event){_vm.customFields=$event}},model:{value:(_vm.transaction.links),callback:function ($$v) {_vm.$set(_vm.transaction, \"links\", $$v)},expression:\"transaction.links\"}},_vm.$listeners))],1)])])])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionDescription.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 class=\"form-group\">\n <vue-typeahead-bootstrap\n v-model=\"description\"\n :data=\"descriptions\"\n :inputClass=\"errors.length > 0 ? 'is-invalid' : ''\"\n :minMatchingChars=\"3\"\n :placeholder=\"$t('firefly.description')\"\n :serializer=\"item => item.description\"\n :showOnFocus=true\n autofocus\n inputName=\"description[]\"\n @input=\"lookupDescription\"\n >\n <template slot=\"append\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary\" tabindex=\"-1\" type=\"button\" v-on:click=\"clearDescription\"><span class=\"far fa-trash-alt\"></span></button>\n </div>\n </template>\n </vue-typeahead-bootstrap>\n <span v-if=\"errors.length > 0\">\n <span v-for=\"error in errors\" class=\"text-danger small\">{{ error }}<br/></span>\n </span>\n </div>\n</template>\n\n<script>\n\nimport VueTypeaheadBootstrap from 'vue-typeahead-bootstrap';\nimport {debounce} from \"lodash\";\n\nexport default {\n props: ['index', 'value', 'errors'],\n components: {VueTypeaheadBootstrap},\n name: \"TransactionDescription\",\n data() {\n return {\n descriptions: [],\n initialSet: [],\n description: this.value,\n }\n },\n created() {\n axios.get(this.getACURL(''))\n .then(response => {\n this.descriptions = response.data;\n this.initialSet = response.data;\n });\n },\n\n methods: {\n clearDescription: function () {\n this.description = '';\n },\n getACURL: function (query) {\n // update autocomplete URL:\n return document.getElementsByTagName('base')[0].href + 'api/v1/autocomplete/transactions?query=' + query;\n },\n lookupDescription: debounce(function () {\n // update autocomplete URL:\n axios.get(this.getACURL(this.value))\n .then(response => {\n this.descriptions = response.data;\n })\n }, 300)\n },\n watch: {\n value: function (value) {\n this.description = value;\n },\n description: function (value) {\n this.$emit('set-field', {field: 'description', index: this.index, value: value});\n }\n },\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionDescription.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionDescription.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionDescription.vue?vue&type=template&id=375a57e5&\"\nimport script from \"./TransactionDescription.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionDescription.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\"},[_c('vue-typeahead-bootstrap',{attrs:{\"data\":_vm.descriptions,\"inputClass\":_vm.errors.length > 0 ? 'is-invalid' : '',\"minMatchingChars\":3,\"placeholder\":_vm.$t('firefly.description'),\"serializer\":function (item) { return item.description; },\"showOnFocus\":true,\"autofocus\":\"\",\"inputName\":\"description[]\"},on:{\"input\":_vm.lookupDescription},model:{value:(_vm.description),callback:function ($$v) {_vm.description=$$v},expression:\"description\"}},[_c('template',{slot:\"append\"},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"tabindex\":\"-1\",\"type\":\"button\"},on:{\"click\":_vm.clearDescription}},[_c('span',{staticClass:\"far fa-trash-alt\"})])])])],2),_vm._v(\" \"),(_vm.errors.length > 0)?_c('span',_vm._l((_vm.errors),function(error){return _c('span',{staticClass:\"text-danger small\"},[_vm._v(_vm._s(error)),_c('br')])}),0):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionDate.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 class=\"form-group\" v-if=\"0===index\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.date_and_time') }}\n </div>\n <div class=\"input-group\">\n <input\n ref=\"date\"\n v-model=\"dateStr\"\n :class=\"errors.length > 0 ? 'form-control is-invalid' : 'form-control'\"\n :placeholder=\"dateStr\"\n :title=\"$t('firefly.date')\"\n autocomplete=\"off\"\n name=\"date[]\"\n type=\"date\"\n >\n <input\n ref=\"time\"\n v-model=\"timeStr\"\n :class=\"errors.length > 0 ? 'form-control is-invalid' : 'form-control'\"\n :placeholder=\"timeStr\"\n :title=\"$t('firefly.time')\"\n autocomplete=\"off\"\n name=\"time[]\"\n type=\"time\"\n >\n </div>\n <span v-if=\"errors.length > 0\">\n <span v-for=\"error in errors\" class=\"text-danger small\">{{ error }}<br/></span>\n </span>\n <span class=\"text-muted small\">{{ localTimeZone }}:{{ systemTimeZone }}</span>\n </div>\n</template>\n\n<script>\n\nimport {mapGetters} from \"vuex\";\n\nexport default {\n props: ['index', 'errors', 'date'],\n name: \"TransactionDate\",\n created() {\n this.localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n this.systemTimeZone = this.timezone;\n // console.log('TransactionDate: ' + this.date);\n // split date and time:\n let parts = this.date.split('T');\n this.dateStr = parts[0];\n this.timeStr = parts[1];\n\n },\n data() {\n return {\n localDate: this.date,\n localTimeZone: '',\n systemTimeZone: '',\n timeStr: '',\n dateStr: '',\n }\n },\n watch: {\n dateStr: function (value) {\n this.$emit('set-date', {date: value + 'T' + this.timeStr});\n },\n timeStr: function (value) {\n this.$emit('set-date', {date: this.dateStr + 'T' + value});\n }\n },\n methods: {},\n computed: {\n ...mapGetters('root', ['timezone']),\n }\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionDate.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionDate.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionDate.vue?vue&type=template&id=67a4f77b&\"\nimport script from \"./TransactionDate.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionDate.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (0===_vm.index)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.date_and_time'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.dateStr),expression:\"dateStr\"}],ref:\"date\",class:_vm.errors.length > 0 ? 'form-control is-invalid' : 'form-control',attrs:{\"placeholder\":_vm.dateStr,\"title\":_vm.$t('firefly.date'),\"autocomplete\":\"off\",\"name\":\"date[]\",\"type\":\"date\"},domProps:{\"value\":(_vm.dateStr)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.dateStr=$event.target.value}}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.timeStr),expression:\"timeStr\"}],ref:\"time\",class:_vm.errors.length > 0 ? 'form-control is-invalid' : 'form-control',attrs:{\"placeholder\":_vm.timeStr,\"title\":_vm.$t('firefly.time'),\"autocomplete\":\"off\",\"name\":\"time[]\",\"type\":\"time\"},domProps:{\"value\":(_vm.timeStr)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.timeStr=$event.target.value}}})]),_vm._v(\" \"),(_vm.errors.length > 0)?_c('span',_vm._l((_vm.errors),function(error){return _c('span',{staticClass:\"text-danger small\"},[_vm._v(_vm._s(error)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"text-muted small\"},[_vm._v(_vm._s(_vm.localTimeZone)+\":\"+_vm._s(_vm.systemTimeZone))])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionBudget.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 class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.budget') }}\n </div>\n <div class=\"input-group\">\n <select\n ref=\"budget\"\n v-model=\"budget\"\n :class=\"errors.length > 0 ? 'form-control is-invalid' : 'form-control'\"\n :title=\"$t('firefly.budget')\"\n autocomplete=\"off\"\n name=\"budget_id[]\"\n >\n <option v-for=\"budget in this.budgetList\" :label=\"budget.name\" :value=\"budget.id\">{{ budget.name }}</option>\n </select>\n </div>\n <span v-if=\"errors.length > 0\">\n <span v-for=\"error in errors\" class=\"text-danger small\">{{ error }}<br/></span>\n </span>\n </div>\n</template>\n\n<script>\nexport default {\n props: ['index', 'value', 'errors'],\n name: \"TransactionBudget\",\n data() {\n return {\n budgetList: [],\n budget: this.value,\n emitEvent: true\n }\n },\n created() {\n this.collectData();\n },\n methods: {\n collectData() {\n this.budgetList.push(\n {\n id: 0,\n name: this.$t('firefly.no_budget'),\n }\n );\n this.getBudgets();\n },\n getBudgets() {\n axios.get('./api/v1/budgets')\n .then(response => {\n this.parseBudgets(response.data);\n }\n );\n },\n parseBudgets(data) {\n for (let key in data.data) {\n if (data.data.hasOwnProperty(key) && /^0$|^[1-9]\\d*$/.test(key) && key <= 4294967294) {\n let current = data.data[key];\n if(!current.attributes.active) {\n continue;\n }\n this.budgetList.push(\n {\n id: parseInt(current.id),\n name: current.attributes.name\n }\n );\n }\n }\n },\n },\n watch: {\n value: function (value) {\n this.emitEvent = false;\n this.budget = value;\n },\n budget: function (value) {\n this.$emit('set-field', {field: 'budget_id', index: this.index, value: value});\n }\n },\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionBudget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionBudget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionBudget.vue?vue&type=template&id=54257463&\"\nimport script from \"./TransactionBudget.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionBudget.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.budget'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.budget),expression:\"budget\"}],ref:\"budget\",class:_vm.errors.length > 0 ? 'form-control is-invalid' : 'form-control',attrs:{\"title\":_vm.$t('firefly.budget'),\"autocomplete\":\"off\",\"name\":\"budget_id[]\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.budget=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((this.budgetList),function(budget){return _c('option',{attrs:{\"label\":budget.name},domProps:{\"value\":budget.id}},[_vm._v(_vm._s(budget.name))])}),0)]),_vm._v(\" \"),(_vm.errors.length > 0)?_c('span',_vm._l((_vm.errors),function(error){return _c('span',{staticClass:\"text-danger small\"},[_vm._v(_vm._s(error)),_c('br')])}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionAccount.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 class=\"form-group\">\n <div v-if=\"visible\" class=\"text-xs d-none d-lg-block d-xl-block\">\n <span v-if=\"0 === this.index\">{{ $t('firefly.' + this.direction + '_account') }}</span>\n <span v-if=\"this.index > 0\" class=\"text-warning\">{{ $t('firefly.first_split_overrules_' + this.direction) }}</span>\n </div>\n <div v-if=\"!visible\" class=\"text-xs d-none d-lg-block d-xl-block\">\n \n </div>\n <vue-typeahead-bootstrap\n v-if=\"visible\"\n v-model=\"accountName\"\n :data=\"accounts\"\n :inputClass=\"errors.length > 0 ? 'is-invalid' : ''\"\n :inputName=\"direction + '[]'\"\n :minMatchingChars=\"3\"\n :placeholder=\"$t('firefly.' + direction + '_account')\"\n :serializer=\"item => item.name_with_balance\"\n :showOnFocus=true\n aria-autocomplete=\"none\"\n autocomplete=\"off\"\n @hit=\"userSelectedAccount\"\n @input=\"lookupAccount\"\n >\n\n <template slot=\"suggestion\" slot-scope=\"{ data, htmlText }\">\n <div :title=\"data.type\" class=\"d-flex\">\n <span v-html=\"htmlText\"></span><br>\n </div>\n </template>\n <template slot=\"append\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary\" tabindex=\"-1\" type=\"button\" v-on:click=\"clearAccount\"><span class=\"far fa-trash-alt\"></span></button>\n </div>\n </template>\n </vue-typeahead-bootstrap>\n <div v-if=\"!visible\" class=\"form-control-static\">\n <span class=\"small text-muted\"><em>{{ $t('firefly.first_split_decides') }}</em></span>\n </div>\n <span v-if=\"errors.length > 0\">\n <span v-for=\"error in errors\" class=\"text-danger small\">{{ error }}<br/></span>\n </span>\n </div>\n</template>\n\n<script>\n\nimport VueTypeaheadBootstrap from 'vue-typeahead-bootstrap';\nimport {debounce} from 'lodash';\n\nexport default {\n name: \"TransactionAccount\",\n components: {VueTypeaheadBootstrap},\n props: {\n index: {\n type: Number,\n },\n direction: {\n type: String,\n },\n value: {\n type: Object,\n default: () => ({})\n },\n errors: {\n type: Array,\n default: () => ([])\n },\n sourceAllowedTypes: {\n type: Array,\n default: () => ([])\n },\n destinationAllowedTypes: {\n type: Array,\n default: () => ([])\n },\n transactionType: {\n type: String,\n default: 'any'\n },\n },\n data() {\n return {\n query: '',\n accounts: [],\n accountTypes: [],\n initialSet: [],\n selectedAccount: {},\n accountName: '',\n selectedAccountTrigger: false,\n }\n },\n created() {\n this.accountName = this.value.name ?? '';\n // console.log('TransactionAccount::created() direction=' + this.direction + ', type=' + this.transactionType + ' , name=\"' + this.accountName + '\"');\n this.selectedAccountTrigger = true;\n },\n methods: {\n getACURL: function (types, query) {\n return './api/v1/autocomplete/accounts?types=' + types.join(',') + '&query=' + query;\n },\n userSelectedAccount: function (event) {\n // console.log('userSelectedAccount!');\n // console.log('To prevent invalid propogation, set selectedAccountTrigger = true');\n this.selectedAccountTrigger = true;\n this.selectedAccount = event;\n },\n systemReturnedAccount: function (event) {\n //console.log('systemReturnedAccount!');\n //console.log('To prevent invalid propogation, set selectedAccountTrigger = false');\n this.selectedAccountTrigger = false;\n this.selectedAccount = event;\n },\n clearAccount: function () {\n //// console.log('TransactionAccount::clearAccount()');\n this.accounts = this.initialSet;\n //this.account = {name: '', type: 'no_type', id: null, currency_id: null, currency_code: null, currency_symbol: null};\n this.accountName = '';\n },\n lookupAccount: debounce(function () {\n //// console.log('TransactionAccount::lookupAccount()');\n //// console.log('In lookupAccount()');\n if (0 === this.accountTypes.length) {\n // set the types from the default types for this direction:\n this.accountTypes = 'source' === this.direction ? this.sourceAllowedTypes : this.destinationAllowedTypes;\n }\n // // console.log(this.direction + ': Will search for types:');\n // // console.log(this.accountTypes);\n\n // update autocomplete URL:\n axios.get(this.getACURL(this.accountTypes, this.accountName))\n .then(response => {\n //// console.log('Got a response!');\n this.accounts = response.data;\n //// console.log(response.data);\n })\n }, 300),\n\n createInitialSet: function () {\n //// console.log('TransactionAccount::createInitialSet()');\n let types = this.sourceAllowedTypes;\n if ('destination' === this.direction) {\n types = this.destinationAllowedTypes;\n }\n // // console.log('createInitialSet() direction=' + this.direction + ' resets to these types:');\n // // console.log(types);\n\n axios.get(this.getACURL(types, ''))\n .then(response => {\n this.accounts = response.data;\n this.initialSet = response.data;\n });\n }\n },\n watch: {\n sourceAllowedTypes: function (value) {\n //// console.log('TransactionAccount::sourceAllowedTypes()');\n // // console.log(this.direction + ' account noticed change in sourceAllowedTypes');\n // // console.log(value);\n this.createInitialSet();\n },\n destinationAllowedTypes: function (value) {\n //// console.log('TransactionAccount::destinationAllowedTypes()');\n // // console.log(this.direction + ' account noticed change in destinationAllowedTypes');\n // // console.log(value);\n this.createInitialSet();\n },\n /**\n * Triggered when the user selects an account from the auto-complete.\n *\n * @param value\n */\n selectedAccount: function (value) {\n //console.log('TransactionAccount::watch selectedAccount()');\n // console.log(value);\n if (true === this.selectedAccountTrigger) {\n // console.log('$emit alles!');\n this.$emit('set-account',\n {\n index: this.index,\n direction: this.direction,\n id: value.id,\n type: value.type,\n name: value.name,\n currency_id: value.currency_id,\n currency_code: value.currency_code,\n currency_symbol: value.currency_symbol,\n }\n );\n //console.log('watch::selectedAccount() will now set accountName because selectedAccountTrigger = true');\n this.accountName = value.name;\n }\n if (false === this.selectedAccountTrigger) {\n //console.log('watch::selectedAccount() will NOT set accountName because selectedAccountTrigger = false');\n }\n if (false === this.selectedAccountTrigger && this.accountName !== value.name && null !== value.name) {\n //console.log('watch::selectedAccount() will set accountName. selectedAccountTrigger = false but name is different (\"' + this.accountName + '\" > \"' + value.name + '\")');\n this.selectedAccountTrigger = true;\n this.accountName = value.name;\n }\n\n },\n accountName: function (value) {\n // console.log('now at watch accountName(\"' + value + '\")');\n // console.log(this.selectedAccountTrigger);\n if (true === this.selectedAccountTrigger) {\n // console.log('Do nothing because selectedAccountTrigger = true');\n }\n if (false === this.selectedAccountTrigger) {\n // console.log('$emit name from watch::accountName() because selectedAccountTrigger = false');\n this.$emit('set-account',\n {\n index: this.index,\n direction: this.direction,\n id: null,\n type: null,\n name: value,\n currency_id: null,\n currency_code: null,\n currency_symbol: null,\n }\n );\n // this.account = {name: value, type: null, id: null, currency_id: null, currency_code: null, currency_symbol: null};\n }\n // console.log('set selectedAccountTrigger to be FALSE');\n this.selectedAccountTrigger = false;\n },\n value: function (value) {\n //console.log('TransactionAccount(' + this.index + ')::watch value(' + JSON.stringify(value) + ')');\n this.systemReturnedAccount(value);\n\n // // console.log('Index ' + this.index + ' nwAct: ', value);\n // // console.log(this.direction + ' account overruled by external forces.');\n // // console.log(value);\n //this.account = value;\n //this.selectedAccountTrigger = true;\n // this.accountName = value.name ?? '';\n // if(null !== value.id) {\n // return;\n // }\n // this.selectedAccountTrigger = true;\n //\n // // console.log('Set selectedAccountTrigger = true');\n // this.selectedAccount = value;\n }\n },\n computed: {\n accountKey: {\n get() {\n return 'source' === this.direction ? 'source_account' : 'destination_account';\n }\n },\n visible: {\n get() {\n // index 0 is always visible:\n if (0 === this.index) {\n return true;\n }\n // // console.log('Direction of account ' + this.index + ' is ' + this.direction + '(' + this.transactionType + ')');\n // // console.log(this.transactionType);\n if ('source' === this.direction) {\n return 'any' === this.transactionType || 'Deposit' === this.transactionType || typeof this.transactionType === 'undefined';\n }\n if ('destination' === this.direction) {\n return 'any' === this.transactionType || 'Withdrawal' === this.transactionType || typeof this.transactionType === 'undefined';\n }\n return false;\n }\n }\n }\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionAccount.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionAccount.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionAccount.vue?vue&type=template&id=49893d47&\"\nimport script from \"./TransactionAccount.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionAccount.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\"},[(_vm.visible)?_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[(0 === this.index)?_c('span',[_vm._v(_vm._s(_vm.$t('firefly.' + this.direction + '_account')))]):_vm._e(),_vm._v(\" \"),(this.index > 0)?_c('span',{staticClass:\"text-warning\"},[_vm._v(_vm._s(_vm.$t('firefly.first_split_overrules_' + this.direction)))]):_vm._e()]):_vm._e(),_vm._v(\" \"),(!_vm.visible)?_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \\n \")]):_vm._e(),_vm._v(\" \"),(_vm.visible)?_c('vue-typeahead-bootstrap',{attrs:{\"data\":_vm.accounts,\"inputClass\":_vm.errors.length > 0 ? 'is-invalid' : '',\"inputName\":_vm.direction + '[]',\"minMatchingChars\":3,\"placeholder\":_vm.$t('firefly.' + _vm.direction + '_account'),\"serializer\":function (item) { return item.name_with_balance; },\"showOnFocus\":true,\"aria-autocomplete\":\"none\",\"autocomplete\":\"off\"},on:{\"hit\":_vm.userSelectedAccount,\"input\":_vm.lookupAccount},scopedSlots:_vm._u([{key:\"suggestion\",fn:function(ref){\nvar data = ref.data;\nvar htmlText = ref.htmlText;\nreturn [_c('div',{staticClass:\"d-flex\",attrs:{\"title\":data.type}},[_c('span',{domProps:{\"innerHTML\":_vm._s(htmlText)}}),_c('br')])]}}],null,false,1423807661),model:{value:(_vm.accountName),callback:function ($$v) {_vm.accountName=$$v},expression:\"accountName\"}},[_vm._v(\" \"),_c('template',{slot:\"append\"},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"tabindex\":\"-1\",\"type\":\"button\"},on:{\"click\":_vm.clearAccount}},[_c('span',{staticClass:\"far fa-trash-alt\"})])])])],2):_vm._e(),_vm._v(\" \"),(!_vm.visible)?_c('div',{staticClass:\"form-control-static\"},[_c('span',{staticClass:\"small text-muted\"},[_c('em',[_vm._v(_vm._s(_vm.$t('firefly.first_split_decides')))])])]):_vm._e(),_vm._v(\" \"),(_vm.errors.length > 0)?_c('span',_vm._l((_vm.errors),function(error){return _c('span',{staticClass:\"text-danger small\"},[_vm._v(_vm._s(error)),_c('br')])}),0):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SwitchAccount.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 class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n <span v-if=\"'any' !== this.transactionType\" class=\"text-muted\">\n {{ $t('firefly.' + this.transactionType) }}\n </span>\n <span v-if=\"'any' === this.transactionType\" class=\"text-muted\"> </span>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"SwitchAccount\",\n props: ['index', 'transactionType'],\n methods: {\n // switchAccounts() {\n // this.$emit('switch-accounts', this.index);\n // }\n }\n}\n</script>\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SwitchAccount.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SwitchAccount.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SwitchAccount.vue?vue&type=template&id=7ccf55e2&\"\nimport script from \"./SwitchAccount.vue?vue&type=script&lang=js&\"\nexport * from \"./SwitchAccount.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[('any' !== this.transactionType)?_c('span',{staticClass:\"text-muted\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.' + this.transactionType))+\"\\n \")]):_vm._e(),_vm._v(\" \"),('any' === this.transactionType)?_c('span',{staticClass:\"text-muted\"},[_vm._v(\" \")]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionAmount.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 class=\"form-group\">\n <div class=\"text-xs\">{{ $t('firefly.amount') }}</div>\n <div class=\"input-group\">\n <div v-if=\"currencySymbol\" class=\"input-group-prepend\">\n <div class=\"input-group-text\">{{ currencySymbol }}</div>\n </div>\n <input\n v-model=\"transactionAmount\"\n :class=\"errors.length > 0 ? 'form-control is-invalid' : 'form-control'\"\n :placeholder=\"$t('firefly.amount')\"\n :title=\"$t('firefly.amount')\"\n autocomplete=\"off\"\n name=\"amount[]\"\n type=\"number\"\n step=\"any\"\n >\n </div>\n <span v-if=\"errors.length > 0\">\n <span v-for=\"error in errors\" class=\"text-danger small\">{{ error }}<br/></span>\n </span>\n </div>\n</template>\n\n<script>\n\nexport default {\n name: \"TransactionAmount\",\n props: {\n index: {\n type: Number,\n default: 0,\n required: true\n },\n errors: {},\n amount: {},\n transactionType: {},\n sourceCurrencySymbol: {},\n destinationCurrencySymbol: {},\n fractionDigits: {\n default: 2,\n required: false\n },\n },\n created() {\n if ('' !== this.amount) {\n this.emitEvent = false;\n this.transactionAmount = this.formatNumber(this.amount);\n }\n },\n methods: {\n formatNumber(str) {\n return parseFloat(str).toFixed(this.fractionDigits);\n }\n },\n data() {\n return {\n transactionAmount: this.amount,\n currencySymbol: null,\n srcCurrencySymbol: this.sourceCurrencySymbol,\n dstCurrencySymbol: this.destinationCurrencySymbol,\n emitEvent: true\n }\n },\n watch: {\n transactionAmount: function (value) {\n if (true === this.emitEvent) {\n this.$emit('set-field', {field: 'amount', index: this.index, value: value});\n }\n this.emitEvent = true;\n },\n amount: function (value) {\n this.transactionAmount = value;\n },\n sourceCurrencySymbol: function (value) {\n this.srcCurrencySymbol = value;\n },\n destinationCurrencySymbol: function (value) {\n this.dstCurrencySymbol = value;\n },\n transactionType: function (value) {\n switch (value) {\n case 'Transfer':\n case 'Withdrawal':\n this.currencySymbol = this.srcCurrencySymbol;\n break;\n case 'Deposit':\n this.currencySymbol = this.dstCurrencySymbol;\n }\n },\n },\n}\n</script>\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionAmount.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionAmount.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionAmount.vue?vue&type=template&id=0b4c09d0&\"\nimport script from \"./TransactionAmount.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionAmount.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs\"},[_vm._v(_vm._s(_vm.$t('firefly.amount')))]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[(_vm.currencySymbol)?_c('div',{staticClass:\"input-group-prepend\"},[_c('div',{staticClass:\"input-group-text\"},[_vm._v(_vm._s(_vm.currencySymbol))])]):_vm._e(),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.transactionAmount),expression:\"transactionAmount\"}],class:_vm.errors.length > 0 ? 'form-control is-invalid' : 'form-control',attrs:{\"placeholder\":_vm.$t('firefly.amount'),\"title\":_vm.$t('firefly.amount'),\"autocomplete\":\"off\",\"name\":\"amount[]\",\"type\":\"number\",\"step\":\"any\"},domProps:{\"value\":(_vm.transactionAmount)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.transactionAmount=$event.target.value}}})]),_vm._v(\" \"),(_vm.errors.length > 0)?_c('span',_vm._l((_vm.errors),function(error){return _c('span',{staticClass:\"text-danger small\"},[_vm._v(_vm._s(error)),_c('br')])}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionForeignAmount.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 <!-- FOREIGN AMOUNT -->\n <div v-if=\"isVisible\" class=\"form-group\">\n <div class=\"text-xs\">{{ $t('form.foreign_amount') }}</div>\n <div class=\"input-group\">\n <input\n v-model=\"amount\"\n :class=\"errors.length > 0 ? 'form-control is-invalid' : 'form-control'\"\n :placeholder=\"$t('form.foreign_amount')\"\n :title=\"$t('form.foreign_amount')\"\n autocomplete=\"off\"\n name=\"foreign_amount[]\"\n type=\"number\"\n >\n </div>\n <span v-if=\"errors.length > 0\">\n <span v-for=\"error in errors\" class=\"text-danger small\">{{ error }}<br/></span>\n </span>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"TransactionForeignAmount\",\n props: {\n index: {},\n errors: {},\n value: {},\n transactionType: {},\n sourceCurrencyId: {},\n destinationCurrencyId: {},\n fractionDigits: {\n type: Number,\n default: 2\n }\n },\n data() {\n return {\n amount: this.value,\n emitEvent: true\n }\n },\n created() {\n if ('' !== this.amount) {\n this.emitEvent = false;\n this.amount = this.formatNumber(this.amount);\n }\n },\n methods: {\n formatNumber(str) {\n return parseFloat(str).toFixed(this.fractionDigits);\n }\n },\n watch: {\n amount: function (value) {\n if (true === this.emitEvent) {\n this.$emit('set-field', {field: 'foreign_amount', index: this.index, value: value});\n }\n this.emitEvent = true;\n },\n value: function (value) {\n this.amount = value;\n\n\n }\n },\n computed: {\n isVisible: {\n get() {\n return !('transfer' === this.transactionType.toLowerCase() && parseInt(this.sourceCurrencyId) === parseInt(this.destinationCurrencyId));\n }\n },\n }\n}\n</script>\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionForeignAmount.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionForeignAmount.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionForeignAmount.vue?vue&type=template&id=c2e81206&\"\nimport script from \"./TransactionForeignAmount.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionForeignAmount.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isVisible)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs\"},[_vm._v(_vm._s(_vm.$t('form.foreign_amount')))]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.amount),expression:\"amount\"}],class:_vm.errors.length > 0 ? 'form-control is-invalid' : 'form-control',attrs:{\"placeholder\":_vm.$t('form.foreign_amount'),\"title\":_vm.$t('form.foreign_amount'),\"autocomplete\":\"off\",\"name\":\"foreign_amount[]\",\"type\":\"number\"},domProps:{\"value\":(_vm.amount)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.amount=$event.target.value}}})]),_vm._v(\" \"),(_vm.errors.length > 0)?_c('span',_vm._l((_vm.errors),function(error){return _c('span',{staticClass:\"text-danger small\"},[_vm._v(_vm._s(error)),_c('br')])}),0):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionForeignCurrency.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 <!-- FOREIGN Currency -->\n <div v-if=\"isVisible\" class=\"form-group\">\n <div class=\"text-xs\"> </div>\n <div class=\"input-group\">\n <select v-model=\"selectedCurrency\" class=\"form-control\" name=\"foreign_currency_id[]\">\n <option v-for=\"currency in selectableCurrencies\" :label=\"currency.name\" :value=\"currency.id\">{{ currency.name }}</option>\n </select>\n </div>\n </div>\n</template>\n<script>\n\nexport default {\n name: \"TransactionForeignCurrency\",\n props: [\n 'index',\n 'transactionType',\n 'sourceCurrencyId',\n 'destinationCurrencyId',\n 'selectedCurrencyId',\n 'value'\n ],\n data() {\n return {\n selectedCurrency: this.value,\n allCurrencies: [],\n selectableCurrencies: [],\n dstCurrencyId: this.destinationCurrencyId,\n srcCurrencyId: this.sourceCurrencyId,\n lockedCurrency: 0,\n emitEvent: true\n }\n },\n watch: {\n value: function (value) {\n this.selectedCurrency = value;\n },\n sourceCurrencyId: function (value) {\n // console.log('Watch sourceCurrencyId');\n this.srcCurrencyId = value;\n this.lockCurrency();\n },\n destinationCurrencyId: function (value) {\n // console.log('Watch destinationCurrencyId');\n this.dstCurrencyId = value;\n this.lockCurrency();\n },\n selectedCurrency: function (value) {\n this.$emit('set-field', {field: 'foreign_currency_id', index: this.index, value: value});\n },\n transactionType: function (value) {\n this.lockCurrency();\n },\n },\n created: function () {\n // console.log('Created TransactionForeignCurrency');\n this.getAllCurrencies();\n },\n methods: {\n lockCurrency: function () {\n // console.log('Lock currency (' + this.transactionType + ')');\n this.lockedCurrency = 0;\n if ('transfer' === this.transactionType.toLowerCase()) {\n // console.log('IS a transfer!');\n this.lockedCurrency = parseInt(this.dstCurrencyId);\n this.selectedCurrency = parseInt(this.dstCurrencyId);\n }\n this.filterCurrencies();\n },\n getAllCurrencies: function () {\n axios.get('./api/v1/autocomplete/currencies')\n .then(response => {\n this.allCurrencies = response.data;\n this.filterCurrencies();\n }\n );\n\n },\n filterCurrencies() {\n // console.log('filterCurrencies');\n // console.log(this.lockedCurrency);\n // if a currency is locked only that currency can (and must) be selected:\n if (0 !== this.lockedCurrency) {\n // console.log('Here we are');\n for (let key in this.allCurrencies) {\n if (this.allCurrencies.hasOwnProperty(key) && /^0$|^[1-9]\\d*$/.test(key) && key <= 4294967294) {\n let current = this.allCurrencies[key];\n if (parseInt(current.id) === this.lockedCurrency) {\n this.selectableCurrencies = [current];\n this.selectedCurrency = current.id;\n }\n }\n }\n // if source + dest ID are the same, skip the whole field.\n\n return;\n }\n\n this.selectableCurrencies = [\n {\n \"id\": 0,\n \"name\": this.$t('firefly.no_currency')\n }\n ];\n for (let key in this.allCurrencies) {\n if (this.allCurrencies.hasOwnProperty(key) && /^0$|^[1-9]\\d*$/.test(key) && key <= 4294967294) {\n let current = this.allCurrencies[key];\n this.selectableCurrencies.push(current);\n }\n }\n }\n },\n computed: {\n isVisible: function () {\n return !('transfer' === this.transactionType.toLowerCase() && parseInt(this.srcCurrencyId) === parseInt(this.dstCurrencyId));\n }\n }\n}\n</script>\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionForeignCurrency.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionForeignCurrency.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionForeignCurrency.vue?vue&type=template&id=7826af29&\"\nimport script from \"./TransactionForeignCurrency.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionForeignCurrency.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isVisible)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs\"},[_vm._v(\" \")]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedCurrency),expression:\"selectedCurrency\"}],staticClass:\"form-control\",attrs:{\"name\":\"foreign_currency_id[]\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedCurrency=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.selectableCurrencies),function(currency){return _c('option',{attrs:{\"label\":currency.name},domProps:{\"value\":currency.id}},[_vm._v(_vm._s(currency.name))])}),0)])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionCustomDates.vue\n - Copyright (c) 2021 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 <div v-for=\"(enabled, name) in availableFields\" class=\"form-group\">\n <div v-if=\"enabled && isDateField(name)\" class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('form.' + name) }}\n </div>\n <div v-if=\"enabled && isDateField(name)\" class=\"input-group\">\n <input\n :ref=\"name\"\n :name=\"name + '[]'\"\n :placeholder=\"$t('form.' + name)\"\n :title=\"$t('form.' + name)\"\n :value=\"getFieldValue(name)\"\n autocomplete=\"off\"\n class=\"form-control\"\n type=\"date\"\n @change=\"setFieldValue($event, name)\"\n >\n </div>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"TransactionCustomDates\",\n props: [\n 'index',\n 'errors',\n 'customFields',\n 'interestDate',\n 'bookDate',\n 'processDate',\n 'dueDate',\n 'paymentDate',\n 'invoiceDate'\n ],\n data() {\n return {\n dateFields: ['interest_date', 'book_date', 'process_date', 'due_date', 'payment_date', 'invoice_date'],\n availableFields: this.customFields,\n dates: {\n interest_date: this.interestDate,\n book_date: this.bookDate,\n process_date: this.processDate,\n due_date: this.dueDate,\n payment_date: this.paymentDate,\n invoice_date: this.invoiceDate,\n }\n ,\n }\n },\n watch: {\n customFields: function (value) {\n this.availableFields = value;\n },\n interestDate: function (value) {\n this.dates.interest_date = value;\n },\n bookDate: function (value) {\n this.dates.book_date = value;\n },\n processDate: function (value) {\n this.dates.process_date = value;\n },\n dueDate: function (value) {\n this.dates.due_date = value;\n },\n paymentDate: function (value) {\n this.dates.payment_date = value;\n },\n invoiceDate: function (value) {\n this.dates.invoice_date = value;\n },\n },\n methods: {\n isDateField: function (name) {\n return this.dateFields.includes(name)\n },\n getFieldValue(field) {\n return this.dates[field] ?? '';\n },\n setFieldValue(event, field) {\n this.$emit('set-field', {field: field, index: this.index, value: event.target.value});\n },\n }\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionCustomDates.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionCustomDates.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionCustomDates.vue?vue&type=template&id=728c6420&\"\nimport script from \"./TransactionCustomDates.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionCustomDates.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.availableFields),function(enabled,name){return _c('div',{staticClass:\"form-group\"},[(enabled && _vm.isDateField(name))?_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('form.' + name))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(enabled && _vm.isDateField(name))?_c('div',{staticClass:\"input-group\"},[_c('input',{ref:name,refInFor:true,staticClass:\"form-control\",attrs:{\"name\":name + '[]',\"placeholder\":_vm.$t('form.' + name),\"title\":_vm.$t('form.' + name),\"autocomplete\":\"off\",\"type\":\"date\"},domProps:{\"value\":_vm.getFieldValue(name)},on:{\"change\":function($event){return _vm.setFieldValue($event, name)}}})]):_vm._e()])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionCategory.vue\n - Copyright (c) 2021 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 class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.category') }}\n </div>\n\n <vue-typeahead-bootstrap\n v-model=\"category\"\n :data=\"categories\"\n :inputClass=\"errors.length > 0 ? 'is-invalid' : ''\"\n :minMatchingChars=\"3\"\n :placeholder=\"$t('firefly.category')\"\n :serializer=\"item => item.name\"\n :showOnFocus=true\n inputName=\"category[]\"\n @hit=\"selectedCategory = $event\"\n @input=\"lookupCategory\"\n >\n <template slot=\"append\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary\" tabindex=\"-1\" type=\"button\" v-on:click=\"clearCategory\"><span class=\"far fa-trash-alt\"></span></button>\n </div>\n </template>\n </vue-typeahead-bootstrap>\n <span v-if=\"errors.length > 0\">\n <span v-for=\"error in errors\" class=\"text-danger small\">{{ error }}<br/></span>\n </span>\n </div>\n</template>\n\n<script>\n\nimport VueTypeaheadBootstrap from 'vue-typeahead-bootstrap';\nimport {debounce} from \"lodash\";\n\nexport default {\n props: ['value', 'index', 'errors'],\n components: {VueTypeaheadBootstrap},\n name: \"TransactionCategory\",\n data() {\n return {\n categories: [],\n initialSet: [],\n category: this.value\n }\n },\n\n created() {\n //console.log('Created category(' + this.index + ') \"' + this.value + '\"');\n // initial list of accounts:\n axios.get(this.getACURL(''))\n .then(response => {\n this.categories = response.data;\n this.initialSet = response.data;\n });\n },\n\n methods: {\n clearCategory: function () {\n this.category = '';\n },\n getACURL: function (query) {\n // update autocomplete URL:\n // console.log('getACURL(\"' + query + '\")');\n return document.getElementsByTagName('base')[0].href + 'api/v1/autocomplete/categories?query=' + query;\n },\n lookupCategory: debounce(function () {\n // update autocomplete URL:\n //console.log('Do a search for \"'+this.category+'\"');\n axios.get(this.getACURL(this.category))\n .then(response => {\n this.categories = response.data;\n })\n }, 300)\n },\n watch: {\n value: function (value) {\n this.category = value ?? '';\n },\n category: function (value) {\n this.$emit('set-field', {field: 'category', index: this.index, value: value});\n }\n },\n computed: {\n selectedCategory: {\n get() {\n return this.categories[this.index].name;\n },\n set(value) {\n this.category = value.name;\n }\n }\n }\n}\n</script>","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionCategory.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionCategory.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionCategory.vue?vue&type=template&id=7b821709&\"\nimport script from \"./TransactionCategory.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionCategory.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.category'))+\"\\n \")]),_vm._v(\" \"),_c('vue-typeahead-bootstrap',{attrs:{\"data\":_vm.categories,\"inputClass\":_vm.errors.length > 0 ? 'is-invalid' : '',\"minMatchingChars\":3,\"placeholder\":_vm.$t('firefly.category'),\"serializer\":function (item) { return item.name; },\"showOnFocus\":true,\"inputName\":\"category[]\"},on:{\"hit\":function($event){_vm.selectedCategory = $event},\"input\":_vm.lookupCategory},model:{value:(_vm.category),callback:function ($$v) {_vm.category=$$v},expression:\"category\"}},[_c('template',{slot:\"append\"},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"tabindex\":\"-1\",\"type\":\"button\"},on:{\"click\":_vm.clearCategory}},[_c('span',{staticClass:\"far fa-trash-alt\"})])])])],2),_vm._v(\" \"),(_vm.errors.length > 0)?_c('span',_vm._l((_vm.errors),function(error){return _c('span',{staticClass:\"text-danger small\"},[_vm._v(_vm._s(error)),_c('br')])}),0):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionBill.vue\n - Copyright (c) 2021 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 class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.bill') }}\n </div>\n <div class=\"input-group\">\n <select\n ref=\"bill\"\n v-model=\"bill\"\n :class=\"errors.length > 0 ? 'form-control is-invalid' : 'form-control'\"\n :title=\"$t('firefly.bill')\"\n autocomplete=\"off\"\n name=\"bill_id[]\"\n >\n <option v-for=\"bill in this.billList\" :label=\"bill.name\" :value=\"bill.id\">{{ bill.name }}</option>\n\n </select>\n </div>\n <span v-if=\"errors.length > 0\">\n <span v-for=\"error in errors\" class=\"text-danger small\">{{ error }}<br/></span>\n </span>\n </div>\n</template>\n\n<script>\nexport default {\n props: ['value', 'index', 'errors'],\n name: \"TransactionBill\",\n data() {\n return {\n billList: [],\n bill: this.value,\n }\n },\n created() {\n this.collectData();\n },\n methods: {\n collectData() {\n this.billList.push(\n {\n id: 0,\n name: this.$t('firefly.no_bill'),\n }\n );\n this.getBills();\n },\n getBills() {\n axios.get('./api/v1/bills')\n .then(response => {\n this.parseBills(response.data);\n }\n );\n },\n parseBills(data) {\n for (let key in data.data) {\n if (data.data.hasOwnProperty(key) && /^0$|^[1-9]\\d*$/.test(key) && key <= 4294967294) {\n let current = data.data[key];\n this.billList.push(\n {\n id: parseInt(current.id),\n name: current.attributes.name\n }\n );\n }\n }\n },\n },\n watch: {\n value: function (value) {\n this.emitEvent = false;\n this.bill = value;\n },\n bill: function (value) {\n this.$emit('set-field', {field: 'bill_id', index: this.index, value: value});\n }\n },\n}\n</script>\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionBill.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionBill.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionBill.vue?vue&type=template&id=e612fb9c&\"\nimport script from \"./TransactionBill.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionBill.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.bill'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bill),expression:\"bill\"}],ref:\"bill\",class:_vm.errors.length > 0 ? 'form-control is-invalid' : 'form-control',attrs:{\"title\":_vm.$t('firefly.bill'),\"autocomplete\":\"off\",\"name\":\"bill_id[]\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.bill=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((this.billList),function(bill){return _c('option',{attrs:{\"label\":bill.name},domProps:{\"value\":bill.id}},[_vm._v(_vm._s(bill.name))])}),0)]),_vm._v(\" \"),(_vm.errors.length > 0)?_c('span',_vm._l((_vm.errors),function(error){return _c('span',{staticClass:\"text-danger small\"},[_vm._v(_vm._s(error)),_c('br')])}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {\nvar this$1 = this;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.tags'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('vue-tags-input',{attrs:{\"add-only-from-autocomplete\":false,\"autocomplete-items\":_vm.autocompleteItems,\"tags\":_vm.tags,\"title\":_vm.$t('firefly.tags'),\"placeholder\":_vm.$t('firefly.tags')},on:{\"tags-changed\":function (newTags) { return this$1.tags = newTags; }},model:{value:(_vm.currentTag),callback:function ($$v) {_vm.currentTag=$$v},expression:\"currentTag\"}})],1),_vm._v(\" \"),(_vm.errors.length > 0)?_c('span',_vm._l((_vm.errors),function(error){return _c('span',{staticClass:\"text-danger small\"},[_vm._v(_vm._s(error)),_c('br')])}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionTags.vue\n - Copyright (c) 2021 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 class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.tags') }}\n </div>\n <div class=\"input-group\">\n <vue-tags-input\n v-model=\"currentTag\"\n :add-only-from-autocomplete=\"false\"\n :autocomplete-items=\"autocompleteItems\"\n :tags=\"tags\"\n :title=\"$t('firefly.tags')\"\n v-bind:placeholder=\"$t('firefly.tags')\"\n @tags-changed=\"newTags => this.tags = newTags\"\n />\n </div>\n <span v-if=\"errors.length > 0\">\n <span v-for=\"error in errors\" class=\"text-danger small\">{{ error }}<br/></span>\n </span>\n </div>\n</template>\n\n<script>\nimport VueTagsInput from \"@johmun/vue-tags-input\";\nimport axios from \"axios\";\n\nexport default {\n name: \"TransactionTags\",\n components: {\n VueTagsInput\n },\n props: ['value', 'index', 'errors'],\n data() {\n return {\n autocompleteItems: [],\n debounce: null,\n tags: [],\n currentTag: '',\n updateTags: true, // the idea is that this is always true, except when the tags-function sets the value.\n tagList: this.value,\n };\n },\n created() {\n let tags = [];\n for (let i in this.value) {\n if (this.value.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n tags.push({text: this.value[i]});\n }\n }\n this.updateTags = false;\n this.tags = tags;\n },\n watch: {\n 'currentTag': 'initItems',\n value: function (value) {\n this.tagList = value;\n },\n tagList: function (value) {\n // console.log('watch tagList');\n this.$emit('set-field', {field: 'tags', index: this.index, value: value});\n this.updateTags = false;\n this.tags = value;\n },\n tags: function (value) {\n if (this.updateTags) {\n let shortList = [];\n for (let key in value) {\n if (value.hasOwnProperty(key)) {\n shortList.push({text: value[key].text});\n }\n }\n this.tagList = shortList;\n }\n this.updateTags = true;\n }\n },\n methods: {\n initItems() {\n if (this.currentTag.length < 2) {\n return;\n }\n const url = document.getElementsByTagName('base')[0].href + `api/v1/autocomplete/tags?query=${this.currentTag}`;\n\n clearTimeout(this.debounce);\n this.debounce = setTimeout(() => {\n axios.get(url).then(response => {\n this.autocompleteItems = response.data.map(item => {\n return {text: item.tag};\n });\n }).catch(() => console.warn('Oh. Something went wrong loading tags.'));\n }, 300);\n },\n },\n\n\n}\n</script>\n<style>\n.vue-tags-input {\n width: 100%;\n max-width: 100% !important;\n display: block;\n border-radius: 0.25rem;\n}\n\n.ti-input {\n border-radius: 0.25rem;\n max-width: 100%;\n width: 100%;\n}\n\n.ti-new-tag-input {\n font-size: 1rem;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionTags.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionTags.vue?vue&type=script&lang=js&\"","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-9[0].rules[0].use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-9[0].rules[0].use[2]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionTags.vue?vue&type=style&index=0&lang=css&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./TransactionTags.vue?vue&type=template&id=dbf814e6&\"\nimport script from \"./TransactionTags.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionTags.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TransactionTags.vue?vue&type=style&index=0&lang=css&\"\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 null,\n null\n \n)\n\nexport default component.exports","<!--\n - TransactionPiggyBank.vue\n - Copyright (c) 2021 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 class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.piggy_bank') }}\n </div>\n <div class=\"input-group\">\n <select\n ref=\"piggy_bank_id\"\n v-model=\"piggy_bank_id\"\n :class=\"errors.length > 0 ? 'form-control is-invalid' : 'form-control'\"\n :title=\"$t('firefly.piggy_bank')\"\n autocomplete=\"off\"\n name=\"piggy_bank_id[]\"\n >\n <option v-for=\"piggy in this.piggyList\" :label=\"piggy.name_with_balance\" :value=\"piggy.id\">{{ piggy.name_with_balance }}</option>\n\n </select>\n </div>\n <span v-if=\"errors.length > 0\">\n <span v-for=\"error in errors\" class=\"text-danger small\">{{ error }}<br/></span>\n </span>\n </div>\n</template>\n\n<script>\n\nexport default {\n props: ['index', 'value', 'errors'],\n name: \"TransactionPiggyBank\",\n data() {\n return {\n piggyList: [],\n piggy_bank_id: this.value,\n }\n },\n created() {\n this.collectData();\n },\n methods: {\n collectData() {\n this.piggyList.push(\n {\n id: 0,\n name_with_balance: this.$t('firefly.no_piggy_bank'),\n }\n );\n this.getPiggies();\n },\n getPiggies() {\n axios.get('./api/v1/autocomplete/piggy-banks-with-balance')\n .then(response => {\n this.parsePiggies(response.data);\n }\n );\n },\n parsePiggies(data) {\n for (let key in data) {\n if (data.hasOwnProperty(key) && /^0$|^[1-9]\\d*$/.test(key) && key <= 4294967294) {\n let current = data[key];\n this.piggyList.push(\n {\n id: parseInt(current.id),\n name_with_balance: current.name_with_balance\n }\n );\n }\n }\n },\n },\n watch: {\n value: function (value) {\n this.piggy_bank_id = value;\n },\n piggy_bank_id: function (value) {\n this.$emit('set-field', {field: 'piggy_bank_id', index: this.index, value: value});\n this.emitEvent = true;\n }\n }\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionPiggyBank.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionPiggyBank.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionPiggyBank.vue?vue&type=template&id=18aafbc0&\"\nimport script from \"./TransactionPiggyBank.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionPiggyBank.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.piggy_bank'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.piggy_bank_id),expression:\"piggy_bank_id\"}],ref:\"piggy_bank_id\",class:_vm.errors.length > 0 ? 'form-control is-invalid' : 'form-control',attrs:{\"title\":_vm.$t('firefly.piggy_bank'),\"autocomplete\":\"off\",\"name\":\"piggy_bank_id[]\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.piggy_bank_id=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((this.piggyList),function(piggy){return _c('option',{attrs:{\"label\":piggy.name_with_balance},domProps:{\"value\":piggy.id}},[_vm._v(_vm._s(piggy.name_with_balance))])}),0)]),_vm._v(\" \"),(_vm.errors.length > 0)?_c('span',_vm._l((_vm.errors),function(error){return _c('span',{staticClass:\"text-danger small\"},[_vm._v(_vm._s(error)),_c('br')])}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionInternalReference.vue\n - Copyright (c) 2021 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 v-if=\"showField\" class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.internal_reference') }}\n </div>\n <div class=\"input-group\">\n <input\n v-model=\"reference\"\n :class=\"errors.length > 0 ? 'form-control is-invalid' : 'form-control'\"\n :placeholder=\"$t('firefly.internal_reference')\"\n name=\"internal_reference[]\"\n type=\"text\"\n />\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary\" tabindex=\"-1\" type=\"button\"><span class=\"far fa-trash-alt\"></span></button>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: ['index', 'value', 'errors', 'customFields'],\n name: \"TransactionInternalReference\",\n data() {\n return {\n reference: this.value,\n availableFields: this.customFields,\n emitEvent: true\n }\n },\n computed: {\n showField: function () {\n if ('internal_reference' in this.availableFields) {\n return this.availableFields.internal_reference;\n }\n return false;\n }\n },\n methods: {},\n watch: {\n customFields: function (value) {\n this.availableFields = value;\n },\n value: function (value) {\n this.emitEvent = false;\n this.reference = value;\n },\n reference: function (value) {\n this.$emit('set-field', {field: 'internal_reference', index: this.index, value: value});\n }\n }\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionInternalReference.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionInternalReference.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionInternalReference.vue?vue&type=template&id=94f353c2&\"\nimport script from \"./TransactionInternalReference.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionInternalReference.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showField)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.internal_reference'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.reference),expression:\"reference\"}],class:_vm.errors.length > 0 ? 'form-control is-invalid' : 'form-control',attrs:{\"placeholder\":_vm.$t('firefly.internal_reference'),\"name\":\"internal_reference[]\",\"type\":\"text\"},domProps:{\"value\":(_vm.reference)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.reference=$event.target.value}}}),_vm._v(\" \"),_vm._m(0)])]):_vm._e()}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"tabindex\":\"-1\",\"type\":\"button\"}},[_c('span',{staticClass:\"far fa-trash-alt\"})])])}]\n\nexport { render, staticRenderFns }","<!--\n - TransactionInternalReference.vue\n - Copyright (c) 2021 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 v-if=\"showField\" class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.external_url') }}\n </div>\n <div class=\"input-group\">\n <input\n v-model=\"url\"\n :class=\"errors.length > 0 ? 'form-control is-invalid' : 'form-control'\"\n :placeholder=\"$t('firefly.external_url')\"\n name=\"external_url[]\"\n type=\"url\"\n />\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary\" tabindex=\"-1\" type=\"button\"><span class=\"far fa-trash-alt\"></span></button>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: ['index', 'value', 'errors', 'customFields'],\n name: \"TransactionExternalUrl\",\n data() {\n return {\n url: this.value,\n availableFields: this.customFields,\n }\n },\n computed: {\n showField: function () {\n if ('external_uri' in this.availableFields) {\n return this.availableFields.external_uri;\n }\n return false;\n }\n },\n methods: {},\n watch: {\n customFields: function (value) {\n this.availableFields = value;\n },\n value: function (value) {\n this.url = value;\n },\n url: function (value) {\n this.$emit('set-field', {field: 'external_url', index: this.index, value: value});\n }\n }\n}\n</script>\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionExternalUrl.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionExternalUrl.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionExternalUrl.vue?vue&type=template&id=7a5ee5e8&\"\nimport script from \"./TransactionExternalUrl.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionExternalUrl.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showField)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.external_url'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.url),expression:\"url\"}],class:_vm.errors.length > 0 ? 'form-control is-invalid' : 'form-control',attrs:{\"placeholder\":_vm.$t('firefly.external_url'),\"name\":\"external_url[]\",\"type\":\"url\"},domProps:{\"value\":(_vm.url)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.url=$event.target.value}}}),_vm._v(\" \"),_vm._m(0)])]):_vm._e()}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"tabindex\":\"-1\",\"type\":\"button\"}},[_c('span',{staticClass:\"far fa-trash-alt\"})])])}]\n\nexport { render, staticRenderFns }","<!--\n - TransactionNotes.vue\n - Copyright (c) 2021 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\n <div v-if=\"showField\" class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.notes') }}\n </div>\n <div class=\"input-group\">\n <textarea\n v-model=\"notes\"\n :class=\"errors.length > 0 ? 'form-control is-invalid' : 'form-control'\"\n :placeholder=\"$t('firefly.notes')\"\n ></textarea>\n </div>\n </div>\n\n</template>\n\n<script>\nexport default {\n props: ['index', 'value', 'errors', 'customFields'],\n name: \"TransactionNotes\",\n data() {\n return {\n notes: this.value,\n availableFields: this.customFields,\n }\n },\n computed: {\n showField: function () {\n if ('notes' in this.availableFields) {\n return this.availableFields.notes;\n }\n return false;\n }\n },\n watch: {\n value: function (value) {\n this.notes = value;\n },\n customFields: function (value) {\n this.availableFields = value;\n },\n notes: function (value) {\n this.$emit('set-field', {field: 'notes', index: this.index, value: value});\n }\n }\n}\n</script>\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionNotes.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionNotes.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionNotes.vue?vue&type=template&id=606fd0df&\"\nimport script from \"./TransactionNotes.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionNotes.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showField)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.notes'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.notes),expression:\"notes\"}],class:_vm.errors.length > 0 ? 'form-control is-invalid' : 'form-control',attrs:{\"placeholder\":_vm.$t('firefly.notes')},domProps:{\"value\":(_vm.notes)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.notes=$event.target.value}}})])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showField)?_c('div',[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.journal_links'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[(_vm.links.length === 0)?_c('p',[_c('button',{staticClass:\"btn btn-default btn-xs\",attrs:{\"type\":\"button\",\"data-target\":\"#linkModal\",\"data-toggle\":\"modal\"},on:{\"click\":_vm.resetModal}},[_c('span',{staticClass:\"fas fa-plus\"}),_vm._v(\" Add transaction link\")])]):_vm._e(),_vm._v(\" \"),(_vm.links.length > 0)?_c('ul',{staticClass:\"list-group\"},_vm._l((_vm.links),function(transaction,index){return _c('li',{key:index,staticClass:\"list-group-item\"},[_c('em',[_vm._v(_vm._s(_vm.getTextForLinkType(transaction.link_type_id)))]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"./transaction/show/\" + transaction.transaction_group_id}},[_vm._v(_vm._s(transaction.description))]),_vm._v(\" \"),(transaction.type === 'withdrawal')?_c('span',[_vm._v(\"\\n (\"),_c('span',{staticClass:\"text-danger\"},[_vm._v(_vm._s(Intl.NumberFormat(_vm.locale, {\n style: 'currency',\n currency: transaction.currency_code\n }).format(parseFloat(transaction.amount) * -1)))]),_vm._v(\")\\n \")]):_vm._e(),_vm._v(\" \"),(transaction.type === 'deposit')?_c('span',[_vm._v(\"\\n (\"),_c('span',{staticClass:\"text-success\"},[_vm._v(_vm._s(Intl.NumberFormat(_vm.locale, {\n style: 'currency',\n currency: transaction.currency_code\n }).format(parseFloat(transaction.amount))))]),_vm._v(\")\\n \")]):_vm._e(),_vm._v(\" \"),(transaction.type === 'transfer')?_c('span',[_vm._v(\"\\n (\"),_c('span',{staticClass:\"text-info\"},[_vm._v(_vm._s(Intl.NumberFormat(_vm.locale, {\n style: 'currency',\n currency: transaction.currency_code\n }).format(parseFloat(transaction.amount))))]),_vm._v(\")\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"btn-group btn-group-xs float-right\"},[_c('button',{staticClass:\"btn btn-xs btn-danger\",attrs:{\"type\":\"button\",\"tabindex\":\"-1\"},on:{\"click\":function($event){return _vm.removeLink(index)}}},[_c('span',{staticClass:\"far fa-trash-alt\"})])])])}),0):_vm._e(),_vm._v(\" \"),(_vm.links.length > 0)?_c('div',{staticClass:\"form-text\"},[_c('button',{staticClass:\"btn btn-default\",attrs:{\"type\":\"button\",\"data-target\":\"#linkModal\",\"data-toggle\":\"modal\"},on:{\"click\":_vm.resetModal}},[_c('span',{staticClass:\"fas fa-plus\"})])]):_vm._e()])])]),_vm._v(\" \"),_c('div',{ref:\"linkModal\",staticClass:\"modal\",attrs:{\"id\":\"linkModal\",\"tabindex\":\"-1\"}},[_c('div',{staticClass:\"modal-dialog modal-lg\"},[_c('div',{staticClass:\"modal-content\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"container-fluid\"},[_vm._m(1),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('form',{attrs:{\"autocomplete\":\"off\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.search.apply(null, arguments)}}},[_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query),expression:\"query\"}],staticClass:\"form-control\",attrs:{\"id\":\"query\",\"autocomplete\":\"off\",\"maxlength\":\"255\",\"name\":\"search\",\"placeholder\":\"Search query\",\"type\":\"text\"},domProps:{\"value\":(_vm.query)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.query=$event.target.value}}}),_vm._v(\" \"),_vm._m(2)])])])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[(_vm.searching)?_c('span',[_c('span',{staticClass:\"fas fa-spinner fa-spin\"})]):_vm._e(),_vm._v(\" \"),(_vm.searchResults.length > 0)?_c('h4',[_vm._v(_vm._s(_vm.$t('firefly.search_results')))]):_vm._e(),_vm._v(\" \"),(_vm.searchResults.length > 0)?_c('table',{staticClass:\"table table-sm\"},[_c('caption',{staticStyle:{\"display\":\"none\"}},[_vm._v(_vm._s(_vm.$t('firefly.search_results')))]),_vm._v(\" \"),_c('thead',[_c('tr',[_c('th',{staticStyle:{\"width\":\"33%\"},attrs:{\"scope\":\"col\",\"colspan\":\"2\"}},[_vm._v(_vm._s(_vm.$t('firefly.include')))]),_vm._v(\" \"),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('firefly.transaction')))])])]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.searchResults),function(result){return _c('tr',[_c('td',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(result.selected),expression:\"result.selected\"}],staticClass:\"form-control\",attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(result.selected)?_vm._i(result.selected,null)>-1:(result.selected)},on:{\"change\":[function($event){var $$a=result.selected,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(result, \"selected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(result, \"selected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(result, \"selected\", $$c)}},function($event){return _vm.selectTransaction($event)}]}})]),_vm._v(\" \"),_c('td',[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(result.link_type_id),expression:\"result.link_type_id\"}],staticClass:\"form-control\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(result, \"link_type_id\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},function($event){return _vm.selectLinkType($event)}]}},_vm._l((_vm.linkTypes),function(linkType){return _c('option',{attrs:{\"label\":linkType.type},domProps:{\"value\":linkType.id + '-' + linkType.direction}},[_vm._v(_vm._s(linkType.type)+\"\\n \")])}),0)]),_vm._v(\" \"),_c('td',[_c('a',{attrs:{\"href\":'./transactions/show/' + result.transaction_group_id}},[_vm._v(_vm._s(result.description))]),_vm._v(\" \"),(result.type === 'withdrawal')?_c('span',[_vm._v(\"\\n (\"),_c('span',{staticClass:\"text-danger\"},[_vm._v(_vm._s(Intl.NumberFormat(_vm.locale, {\n style: 'currency',\n currency: result.currency_code\n }).format(parseFloat(result.amount) * -1)))]),_vm._v(\")\\n \")]):_vm._e(),_vm._v(\" \"),(result.type === 'deposit')?_c('span',[_vm._v(\"\\n (\"),_c('span',{staticClass:\"text-success\"},[_vm._v(_vm._s(Intl.NumberFormat(_vm.locale, {\n style: 'currency',\n currency: result.currency_code\n }).format(parseFloat(result.amount))))]),_vm._v(\")\\n \")]):_vm._e(),_vm._v(\" \"),(result.type === 'transfer')?_c('span',[_vm._v(\"\\n (\"),_c('span',{staticClass:\"text-info\"},[_vm._v(_vm._s(Intl.NumberFormat(_vm.locale, {\n style: 'currency',\n currency: result.currency_code\n }).format(parseFloat(result.amount))))]),_vm._v(\")\\n \")]):_vm._e(),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_c('a',{attrs:{\"href\":'./accounts/show/' + result.source_id}},[_vm._v(_vm._s(result.source_name))]),_vm._v(\"\\n →\\n \"),_c('a',{attrs:{\"href\":'./accounts/show/' + result.destination_id}},[_vm._v(_vm._s(result.destination_name))])])])])}),0)]):_vm._e()])])])]),_vm._v(\" \"),_vm._m(3)])])])]):_vm._e()}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Transaction thing dialog.\")]),_vm._v(\" \"),_c('button',{staticClass:\"close\",attrs:{\"aria-label\":\"Close\",\"data-dismiss\":\"modal\",\"type\":\"button\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('p',[_vm._v(\"\\n Use this form to search for transactions you wish to link to this one. When in doubt, use \"),_c('code',[_vm._v(\"id:*\")]),_vm._v(\" where the ID is the number from\\n the URL.\\n \")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-default\",attrs:{\"type\":\"submit\"}},[_c('span',{staticClass:\"fas fa-search\"}),_vm._v(\" Search\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"data-dismiss\":\"modal\",\"type\":\"button\"}},[_vm._v(\"Close\")])])}]\n\nexport { render, staticRenderFns }","<!--\n - TransactionLinks.vue\n - Copyright (c) 2021 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 v-if=\"showField\">\n <div class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.journal_links') }}\n </div>\n <div class=\"row\">\n <div class=\"col\">\n <p v-if=\"links.length === 0\">\n <button type=\"button\" class=\"btn btn-default btn-xs\" data-target=\"#linkModal\" @click=\"resetModal\" data-toggle=\"modal\"><span class=\"fas fa-plus\"></span> Add transaction link</button>\n </p>\n <ul v-if=\"links.length > 0\" class=\"list-group\">\n <li v-for=\"(transaction, index) in links\" class=\"list-group-item\" v-bind:key=\"index\">\n <em>{{ getTextForLinkType(transaction.link_type_id) }}</em>\n <a :href='\"./transaction/show/\" + transaction.transaction_group_id'>{{ transaction.description }}</a>\n\n <span v-if=\"transaction.type === 'withdrawal'\">\n (<span class=\"text-danger\">{{\n Intl.NumberFormat(locale, {\n style: 'currency',\n currency: transaction.currency_code\n }).format(parseFloat(transaction.amount) * -1)\n }}</span>)\n </span>\n <span v-if=\"transaction.type === 'deposit'\">\n (<span class=\"text-success\">{{\n Intl.NumberFormat(locale, {\n style: 'currency',\n currency: transaction.currency_code\n }).format(parseFloat(transaction.amount))\n }}</span>)\n </span>\n <span v-if=\"transaction.type === 'transfer'\">\n (<span class=\"text-info\">{{\n Intl.NumberFormat(locale, {\n style: 'currency',\n currency: transaction.currency_code\n }).format(parseFloat(transaction.amount))\n }}</span>)\n </span>\n <div class=\"btn-group btn-group-xs float-right\">\n <button type=\"button\" class=\"btn btn-xs btn-danger\" @click=\"removeLink(index)\" tabindex=\"-1\"><span class=\"far fa-trash-alt\"></span></button>\n </div>\n </li>\n </ul>\n <div v-if=\"links.length > 0\" class=\"form-text\">\n <button type=\"button\" class=\"btn btn-default\" @click=\"resetModal\" data-target=\"#linkModal\" data-toggle=\"modal\"><span class=\"fas fa-plus\"></span></button>\n </div>\n </div>\n </div>\n </div>\n <!-- modal -->\n <div id=\"linkModal\" class=\"modal\" tabindex=\"-1\" ref=\"linkModal\">\n <div class=\"modal-dialog modal-lg\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Transaction thing dialog.</h5>\n <button aria-label=\"Close\" class=\"close\" data-dismiss=\"modal\" type=\"button\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col\">\n <p>\n Use this form to search for transactions you wish to link to this one. When in doubt, use <code>id:*</code> where the ID is the number from\n the URL.\n </p>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col\">\n <form v-on:submit.prevent=\"search\" autocomplete=\"off\">\n <div class=\"input-group\">\n <input id=\"query\" v-model=\"query\" autocomplete=\"off\" class=\"form-control\" maxlength=\"255\" name=\"search\"\n placeholder=\"Search query\" type=\"text\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-default\" type=\"submit\"><span class=\"fas fa-search\"></span> Search</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col\">\n <span v-if=\"searching\"><span class=\"fas fa-spinner fa-spin\"></span></span>\n <h4 v-if=\"searchResults.length > 0\">{{ $t('firefly.search_results') }}</h4>\n <table v-if=\"searchResults.length > 0\" class=\"table table-sm\">\n <caption style=\"display:none;\">{{ $t('firefly.search_results') }}</caption>\n <thead>\n <tr>\n <th scope=\"col\" colspan=\"2\" style=\"width:33%\">{{ $t('firefly.include') }}</th>\n <th scope=\"col\">{{ $t('firefly.transaction') }}</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"result in searchResults\">\n <td>\n <input v-model=\"result.selected\" class=\"form-control\"\n type=\"checkbox\"\n @change=\"selectTransaction($event)\"\n />\n </td>\n <td>\n <select\n v-model=\"result.link_type_id\"\n class=\"form-control\"\n @change=\"selectLinkType($event)\"\n >\n <option v-for=\"linkType in linkTypes\" :label=\"linkType.type\" :value=\"linkType.id + '-' + linkType.direction\">{{\n linkType.type\n }}\n </option>\n </select>\n </td>\n <td>\n <a :href=\"'./transactions/show/' + result.transaction_group_id\">{{ result.description }}</a>\n <span v-if=\"result.type === 'withdrawal'\">\n (<span class=\"text-danger\">{{\n Intl.NumberFormat(locale, {\n style: 'currency',\n currency: result.currency_code\n }).format(parseFloat(result.amount) * -1)\n }}</span>)\n </span>\n <span v-if=\"result.type === 'deposit'\">\n (<span class=\"text-success\">{{\n Intl.NumberFormat(locale, {\n style: 'currency',\n currency: result.currency_code\n }).format(parseFloat(result.amount))\n }}</span>)\n </span>\n <span v-if=\"result.type === 'transfer'\">\n (<span class=\"text-info\">{{\n Intl.NumberFormat(locale, {\n style: 'currency',\n currency: result.currency_code\n }).format(parseFloat(result.amount))\n }}</span>)\n </span>\n <br/>\n <em>\n <a :href=\"'./accounts/show/' + result.source_id\">{{ result.source_name }}</a>\n →\n <a :href=\"'./accounts/show/' + result.destination_id\">{{ result.destination_name }}</a>\n </em>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" data-dismiss=\"modal\" type=\"button\">Close</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nconst lodashClonedeep = require('lodash.clonedeep');\n// See reference nr. 3\nexport default {\n props: ['index', 'value', 'errors', 'customFields'],\n name: \"TransactionLinks\",\n data() {\n return {\n searchResults: [],\n include: [],\n locale: 'en-US',\n linkTypes: [],\n query: '',\n searching: false,\n links: this.value,\n availableFields: this.customFields,\n emitEvent: true\n }\n },\n created() {\n this.locale = localStorage.locale ?? 'en-US';\n this.emitEvent = false;\n this.links = lodashClonedeep(this.value);\n this.getLinkTypes();\n\n },\n computed: {\n showField: function () {\n if ('links' in this.availableFields) {\n return this.availableFields.links;\n }\n return false;\n }\n },\n watch: {\n value: function (value) {\n if (null !== value) {\n this.emitEvent = false;\n this.links = lodashClonedeep(value);\n }\n },\n links: function (value) {\n if (true === this.emitEvent) {\n this.$emit('set-field', {index: this.index, field: 'links', value: lodashClonedeep(value)});\n }\n this.emitEvent = true;\n },\n customFields: function (value) {\n this.availableFields = value;\n }\n },\n methods: {\n removeLink: function (index) {\n this.links.splice(index, 1);\n },\n getTextForLinkType: function (linkTypeId) {\n let parts = linkTypeId.split('-');\n for (let i in this.linkTypes) {\n if (this.linkTypes.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let current = this.linkTypes[i];\n if (parts[0] === current.id && parts[1] === current.direction) {\n return current.type;\n }\n }\n }\n return 'text for #' + linkTypeId;\n },\n selectTransaction: function (event) {\n for (let i in this.searchResults) {\n if (this.searchResults.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let current = this.searchResults[i];\n if (current.selected) {\n this.addToSelected(current);\n }\n if (!current.selected) {\n // remove from\n this.removeFromSelected(current);\n }\n }\n }\n },\n selectLinkType: function (event) {\n for (let i in this.searchResults) {\n if (this.searchResults.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let current = this.searchResults[i];\n this.updateSelected(current.transaction_journal_id, current.link_type_id);\n }\n }\n },\n updateSelected(journalId, linkTypeId) {\n for (let i in this.links) {\n if (this.links.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let current = this.links[i];\n if (parseInt(current.transaction_journal_id) === journalId) {\n this.links[i].link_type_id = linkTypeId;\n }\n }\n }\n },\n addToSelected(journal) {\n let result = this.links.find(({transaction_journal_id}) => transaction_journal_id === journal.transaction_journal_id);\n if (typeof result === 'undefined') {\n this.links.push(journal);\n }\n },\n removeFromSelected(journal) {\n for (let i in this.links) {\n if (this.links.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let current = this.links[i];\n if (current.transaction_journal_id === journal.transaction_journal_id) {\n this.links.splice(parseInt(i), 1);\n }\n }\n }\n },\n getLinkTypes: function () {\n let url = './api/v1/link_types';\n axios.get(url)\n .then(response => {\n this.parseLinkTypes(response.data);\n }\n );\n },\n resetModal: function() {\n this.search();\n },\n parseLinkTypes: function (data) {\n for (let i in data.data) {\n if (data.data.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let current = data.data[i];\n let linkTypeInward = {\n id: current.id,\n type: current.attributes.inward,\n direction: 'inward'\n };\n let linkTypeOutward = {\n id: current.id,\n type: current.attributes.outward,\n direction: 'outward'\n };\n if (linkTypeInward.type === linkTypeOutward.type) {\n linkTypeInward.type = linkTypeInward.type + ' (←)';\n linkTypeOutward.type = linkTypeOutward.type + ' (→)';\n }\n this.linkTypes.push(linkTypeInward);\n this.linkTypes.push(linkTypeOutward);\n }\n }\n },\n search: function () {\n if('' === this.query) {\n this.searchResults = [];\n return;\n }\n this.searching = true;\n this.searchResults = [];\n let url = './api/v1/search/transactions?limit=10&query=' + this.query;\n axios.get(url)\n .then(response => {\n this.parseSearch(response.data);\n }\n );\n },\n parseSearch: function (data) {\n for (let i in data.data) {\n if (data.data.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n for (let ii in data.data[i].attributes.transactions) {\n if (data.data[i].attributes.transactions.hasOwnProperty(ii) && /^0$|^[1-9]\\d*$/.test(ii) && ii <= 4294967294) {\n let current = data.data[i].attributes.transactions[ii];\n current.transaction_group_id = parseInt(data.data[i].id);\n current.selected = this.isJournalSelected(current.transaction_journal_id);\n current.link_type_id = this.getJournalLinkType(current.transaction_journal_id);\n current.link_type_text = '';\n this.searchResults.push(current);\n }\n }\n }\n }\n this.searching = false;\n },\n getJournalLinkType: function (journalId) {\n for (let i in this.links) {\n if (this.links.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let current = this.links[i];\n if (current.transaction_journal_id === journalId) {\n return current.link_type_id;\n }\n }\n }\n return '1-inward';\n },\n isJournalSelected: function (journalId) {\n for (let i in this.links) {\n if (this.links.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let current = this.links[i];\n if (current.transaction_journal_id === journalId) {\n return true;\n }\n }\n }\n return false;\n }\n }\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionLinks.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionLinks.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionLinks.vue?vue&type=template&id=7826e6c4&\"\nimport script from \"./TransactionLinks.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionLinks.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 null,\n null\n \n)\n\nexport default component.exports","<!--\n - TransactionAttachments.vue\n - Copyright (c) 2021 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 v-if=\"showField\" class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.attachments') }}\n </div>\n <div class=\"input-group\">\n <input\n ref=\"att\"\n class=\"form-control\"\n multiple\n @change=\"selectedFile\"\n name=\"attachments[]\"\n type=\"file\"\n />\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"TransactionAttachments\",\n props: ['transaction_journal_id', 'customFields', 'index', 'uploadTrigger', 'clearTrigger'],\n data() {\n return {\n availableFields: this.customFields,\n uploads: 0,\n created: 0,\n uploaded: 0,\n }\n },\n watch: {\n customFields: function (value) {\n this.availableFields = value;\n },\n uploadTrigger: function () {\n // console.log('uploadTrigger(' + this.transaction_journal_id + ',' + this.index + ')');\n this.doUpload();\n },\n clearTrigger: function () {\n // console.log('clearTrigger(' + this.transaction_journal_id + ',' + this.index + ')');\n this.$refs.att.value = null;\n },\n transaction_journal_id: function (value) {\n // console.log('watch transaction_journal_id: ' + value + ' (index ' + this.index + ')');\n }\n },\n computed: {\n showField: function () {\n if ('attachments' in this.availableFields) {\n return this.availableFields.attachments;\n }\n return false;\n }\n },\n methods: {\n selectedFile: function () {\n this.$emit('selected-attachments', {index: this.index, id: this.transaction_journal_id});\n },\n createAttachment: function (name) {\n // console.log('Now in createAttachment()');\n const uri = './api/v1/attachments';\n const data = {\n filename: name,\n attachable_type: 'TransactionJournal',\n attachable_id: this.transaction_journal_id,\n };\n // create new attachment:\n return axios.post(uri, data);\n },\n uploadAttachment: function (attachmentId, data) {\n this.created++;\n // console.log('Now in uploadAttachment()');\n const uploadUri = './api/v1/attachments/' + attachmentId + '/upload';\n return axios.post(uploadUri, data)\n },\n countAttachment: function () {\n this.uploaded++;\n // console.log('Uploaded ' + this.uploaded + ' / ' + this.uploads);\n if (this.uploaded >= this.uploads) {\n // console.log('All files uploaded. Emit event for ' + this.transaction_journal_id + '(' + this.index + ')');\n this.$emit('uploaded-attachments', this.transaction_journal_id);\n }\n },\n doUpload: function () {\n let files = this.$refs.att.files;\n this.uploads = files.length;\n // loop all files and create attachments.\n for (let i in files) {\n if (files.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n // console.log('Now at file ' + (parseInt(i) + 1) + ' / ' + files.length);\n // read file into file reader:\n let current = files[i];\n let fileReader = new FileReader();\n let theParent = this; // dont ask me why i need to do this.\n fileReader.onloadend = evt => {\n if (evt.target.readyState === FileReader.DONE) {\n // console.log('I am done reading file ' + (parseInt(i) + 1));\n this.createAttachment(current.name).then(response => {\n // console.log('Created attachment. Now upload (1)');\n return theParent.uploadAttachment(response.data.data.id, new Blob([evt.target.result]));\n }).then(theParent.countAttachment);\n }\n }\n fileReader.readAsArrayBuffer(current);\n }\n }\n if (0 === files.length) {\n //console.log('No files to upload. Emit event!');\n this.$emit('uploaded-attachments', this.transaction_journal_id);\n }\n // Promise.all(promises).then(response => {\n // console.log('All files uploaded. Emit event!');\n // this.$emit('uploaded-attachments', this.transaction_journal_id);\n // });\n }\n }\n\n}\n</script>\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionAttachments.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionAttachments.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionAttachments.vue?vue&type=template&id=0364e752&\"\nimport script from \"./TransactionAttachments.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionAttachments.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showField)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.attachments'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"input-group\"},[_c('input',{ref:\"att\",staticClass:\"form-control\",attrs:{\"multiple\":\"\",\"name\":\"attachments[]\",\"type\":\"file\"},on:{\"change\":_vm.selectedFile}})])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionLocation.vue\n - Copyright (c) 2021 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 v-if=\"showField\" class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.location') }}\n </div>\n <div style=\"width:100%;height:300px;\">\n <l-map\n ref=\"myMap\"\n :center=\"center\"\n :zoom=\"zoom\" style=\"width:100%;height:300px;\"\n @ready=\"prepMap()\"\n @update:zoom=\"zoomUpdated\"\n @update:center=\"centerUpdated\"\n @update:bounds=\"boundsUpdated\"\n >\n <l-tile-layer :url=\"url\"></l-tile-layer>\n <l-marker :lat-lng=\"marker\" :visible=\"hasMarker\"></l-marker>\n </l-map>\n <span>\n <button class=\"btn btn-default btn-xs\" @click=\"clearLocation\">{{ $t('firefly.clear_location') }}</button>\n </span>\n </div>\n <p> </p>\n </div>\n</template>\n\n<script>\n\n// If you need to reference 'L', such as in 'L.icon', then be sure to\n// explicitly import 'leaflet' into your component\n// import L from 'leaflet';\nimport {LMap, LMarker, LTileLayer} from 'vue2-leaflet';\nimport 'leaflet/dist/leaflet.css';\n\nimport L from 'leaflet';\n\ndelete L.Icon.Default.prototype._getIconUrl;\n\nL.Icon.Default.mergeOptions({\n iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),\n iconUrl: require('leaflet/dist/images/marker-icon.png'),\n shadowUrl: require('leaflet/dist/images/marker-shadow.png')\n });\n\nexport default {\n name: \"TransactionLocation\",\n props: {\n index: {},\n value: {\n type: Object,\n required: false\n },\n errors: {},\n customFields: {},\n },\n components: {\n LMap,\n LTileLayer,\n LMarker,\n },\n created() {\n if (null === this.value || typeof this.value === 'undefined') {\n axios.get('./api/v1/configuration/firefly.default_location').then(response => {\n this.zoom = parseInt(response.data.data.value.zoom_level);\n this.center =\n [\n parseFloat(response.data.data.value.latitude),\n parseFloat(response.data.data.value.longitude),\n ]\n ;\n });\n return;\n }\n if (null !== this.value.zoom_level && null !== this.value.latitude && null !== this.value.longitude) {\n this.zoom = this.value.zoom_level;\n this.center = [\n parseFloat(this.value.latitude),\n parseFloat(this.value.longitude),\n ];\n this.hasMarker = true;\n }\n },\n data() {\n return {\n availableFields: this.customFields,\n url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n zoom: 3,\n center: [0, 0],\n bounds: null,\n map: null,\n hasMarker: false,\n marker: [0, 0],\n }\n },\n methods: {\n prepMap: function () {\n this.map = this.$refs.myMap.mapObject;\n this.map.on('contextmenu', this.setObjectLocation);\n this.map.on('zoomend', this.saveZoomLevel);\n },\n setObjectLocation: function (event) {\n this.marker = [event.latlng.lat, event.latlng.lng];\n this.hasMarker = true;\n this.emitEvent();\n },\n saveZoomLevel: function () {\n this.emitEvent();\n },\n clearLocation: function () {\n this.hasMarker = false;\n this.emitEvent();\n },\n emitEvent() {\n this.$emit('set-marker-location', {\n index: this.index,\n zoomLevel: this.zoom,\n lat: this.marker[0],\n lng: this.marker[1],\n hasMarker: this.hasMarker\n }\n );\n },\n zoomUpdated(zoom) {\n this.zoom = zoom;\n },\n centerUpdated(center) {\n this.center = center;\n },\n boundsUpdated(bounds) {\n this.bounds = bounds;\n }\n },\n computed: {\n showField: function () {\n if ('location' in this.availableFields) {\n return this.availableFields.location;\n }\n return false;\n }\n },\n watch: {\n customFields: function (value) {\n this.availableFields = value;\n },\n }\n}\n</script>\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionLocation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionLocation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionLocation.vue?vue&type=template&id=26d78234&\"\nimport script from \"./TransactionLocation.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionLocation.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showField)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.location'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticStyle:{\"width\":\"100%\",\"height\":\"300px\"}},[_c('l-map',{ref:\"myMap\",staticStyle:{\"width\":\"100%\",\"height\":\"300px\"},attrs:{\"center\":_vm.center,\"zoom\":_vm.zoom},on:{\"ready\":function($event){return _vm.prepMap()},\"update:zoom\":_vm.zoomUpdated,\"update:center\":_vm.centerUpdated,\"update:bounds\":_vm.boundsUpdated}},[_c('l-tile-layer',{attrs:{\"url\":_vm.url}}),_vm._v(\" \"),_c('l-marker',{attrs:{\"lat-lng\":_vm.marker,\"visible\":_vm.hasMarker}})],1),_vm._v(\" \"),_c('span',[_c('button',{staticClass:\"btn btn-default btn-xs\",on:{\"click\":_vm.clearLocation}},[_vm._v(_vm._s(_vm.$t('firefly.clear_location')))])])],1),_vm._v(\" \"),_c('p',[_vm._v(\" \")])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SplitForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SplitForm.vue?vue&type=script&lang=js&\"","<!--\n - SplitForm.vue\n - Copyright (c) 2021 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 :id=\"'split_' + index\" :class=\"'tab-pane' + (0 === index ? ' active' : '')\">\n <div class=\"row\">\n <div class=\"col\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">\n {{ $t('firefly.basic_journal_information') }}\n <span v-if=\"count > 1\">({{ index + 1 }} / {{ count }}) </span>\n </h3>\n <div v-if=\"count>1\" class=\"card-tools\">\n <button type=\"button\" class=\"btn btn-danger btn-xs\" @click=\"removeTransaction\"><span class=\"fas fa-trash-alt\"></span></button>\n </div>\n </div>\n\n <div class=\"card-body\">\n <!-- start of body -->\n <div class=\"row\">\n <div class=\"col\">\n <TransactionDescription\n v-model=\"transaction.description\"\n v-on=\"$listeners\"\n :errors=\"transaction.errors.description\"\n :index=\"index\"\n ></TransactionDescription>\n </div>\n </div>\n <!-- source and destination -->\n <div class=\"row\">\n <div class=\"col-xl-5 col-lg-5 col-md-10 col-sm-12 col-xs-12\">\n <!-- SOURCE -->\n <TransactionAccount\n v-model=\"sourceAccount\"\n v-on=\"$listeners\"\n :destination-allowed-types=\"destinationAllowedTypes\"\n :errors=\"transaction.errors.source\"\n :index=\"index\"\n :source-allowed-types=\"sourceAllowedTypes\"\n :transaction-type=\"transactionType\"\n direction=\"source\"\n />\n </div>\n <!-- switcharoo! -->\n <div class=\"col-xl-2 col-lg-2 col-md-2 col-sm-12 text-center d-none d-sm-block\">\n <SwitchAccount\n v-if=\"0 === index && allowSwitch\"\n v-on=\"$listeners\"\n :index=\"index\"\n :transaction-type=\"transactionType\"\n />\n </div>\n\n <!-- destination -->\n <div class=\"col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12\">\n <!-- DESTINATION -->\n <TransactionAccount\n v-model=\"destinationAccount\"\n v-on=\"$listeners\"\n :destination-allowed-types=\"destinationAllowedTypes\"\n :errors=\"transaction.errors.destination\"\n :index=\"index\"\n :transaction-type=\"transactionType\"\n :source-allowed-types=\"sourceAllowedTypes\"\n direction=\"destination\"\n />\n </div>\n </div>\n\n\n <!-- amount -->\n <div class=\"row\">\n <div class=\"col-xl-5 col-lg-5 col-md-10 col-sm-12 col-xs-12\">\n <!-- AMOUNT -->\n <TransactionAmount\n v-on=\"$listeners\"\n :amount=\"transaction.amount\"\n :destination-currency-symbol=\"this.transaction.destination_account_currency_symbol\"\n :errors=\"transaction.errors.amount\"\n :index=\"index\"\n :source-currency-symbol=\"this.transaction.source_account_currency_symbol\"\n :transaction-type=\"this.transactionType\"\n />\n </div>\n <div class=\"col-xl-2 col-lg-2 col-md-2 col-sm-12 text-center d-none d-sm-block\">\n <TransactionForeignCurrency\n v-model=\"transaction.foreign_currency_id\"\n v-on=\"$listeners\"\n :destination-currency-id=\"this.transaction.destination_account_currency_id\"\n :index=\"index\"\n :selected-currency-id=\"this.transaction.foreign_currency_id\"\n :source-currency-id=\"this.transaction.source_account_currency_id\"\n :transaction-type=\"this.transactionType\"\n />\n </div>\n <div class=\"col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12\">\n <!--\n The reason that TransactionAmount gets the symbols and\n TransactionForeignAmount gets the ID's of the currencies is\n because ultimately TransactionAmount doesn't decide which\n currency id is submitted to Firefly III.\n -->\n <TransactionForeignAmount\n v-model=\"transaction.foreign_amount\"\n v-on=\"$listeners\"\n :destination-currency-id=\"this.transaction.destination_account_currency_id\"\n :errors=\"transaction.errors.foreign_amount\"\n :index=\"index\"\n :selected-currency-id=\"this.transaction.foreign_currency_id\"\n :source-currency-id=\"this.transaction.source_account_currency_id\"\n :transaction-type=\"this.transactionType\"\n />\n </div>\n </div>\n\n <!-- dates -->\n <div class=\"row\">\n <div class=\"col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12\">\n <TransactionDate\n v-on=\"$listeners\"\n :date=\"splitDate\"\n :errors=\"transaction.errors.date\"\n :index=\"index\"\n />\n </div>\n\n <div class=\"col-xl-5 col-lg-5 col-md-12 col-sm-12 col-xs-12 offset-xl-2 offset-lg-2\">\n <TransactionCustomDates\n v-on=\"$listeners\"\n :book-date=\"transaction.book_date\"\n :custom-fields.sync=\"customFields\"\n :due-date=\"transaction.due_date\"\n :errors=\"transaction.errors.custom_dates\"\n :index=\"index\"\n :interest-date=\"transaction.interest_date\"\n :invoice-date=\"transaction.invoice_date\"\n :payment-date=\"transaction.payment_date\"\n :process-date=\"transaction.process_date\"\n />\n </div>\n </div>\n\n <!-- end of body -->\n </div>\n </div>\n </div>\n </div> <!-- end of basic card -->\n\n <!-- card for meta -->\n <div class=\"row\">\n <div class=\"col\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">\n {{ $t('firefly.transaction_journal_meta') }}\n <span v-if=\"count > 1\">({{ index + 1 }} / {{ count }}) </span>\n </h3>\n </div>\n <div class=\"card-body\">\n <!-- start of body -->\n <!-- meta -->\n <div class=\"row\">\n <div class=\"col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\">\n <TransactionBudget\n v-if=\"!('Transfer' === transactionType || 'Deposit' === transactionType)\"\n v-model=\"transaction.budget_id\"\n v-on=\"$listeners\"\n :errors=\"transaction.errors.budget\"\n :index=\"index\"\n />\n <TransactionCategory\n v-model=\"transaction.category\"\n v-on=\"$listeners\"\n :errors=\"transaction.errors.category\"\n :index=\"index\"\n />\n </div>\n <div class=\"col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\">\n <TransactionBill\n v-if=\"!('Transfer' === transactionType || 'Deposit' === transactionType)\"\n v-model=\"transaction.bill_id\"\n v-on=\"$listeners\"\n :errors=\"transaction.errors.bill\"\n :index=\"index\"\n />\n <TransactionTags\n v-model=\"transaction.tags\"\n v-on=\"$listeners\"\n :errors=\"transaction.errors.tags\"\n :index=\"index\"\n />\n <TransactionPiggyBank\n v-if=\"!('Withdrawal' === transactionType || 'Deposit' === transactionType)\"\n v-model=\"transaction.piggy_bank_id\"\n v-on=\"$listeners\"\n :errors=\"transaction.errors.piggy_bank\"\n :index=\"index\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- end card for meta -->\n <!-- card for extra -->\n <div v-if=\"hasMetaFields\" class=\"row\">\n <div class=\"col\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">\n {{ $t('firefly.transaction_journal_extra') }}\n <span v-if=\"count > 1\">({{ index + 1 }} / {{ count }}) </span>\n </h3>\n </div>\n <div class=\"card-body\">\n <!-- start of body -->\n <div class=\"row\">\n <div class=\"col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\">\n\n <TransactionInternalReference\n v-model=\"transaction.internal_reference\"\n v-on=\"$listeners\"\n :custom-fields.sync=\"customFields\"\n :errors=\"transaction.errors.internal_reference\"\n :index=\"index\"\n />\n\n <TransactionExternalUrl\n v-model=\"transaction.external_url\"\n v-on=\"$listeners\"\n :custom-fields.sync=\"customFields\"\n :errors=\"transaction.errors.external_url\"\n :index=\"index\"\n />\n <TransactionNotes\n v-model=\"transaction.notes\"\n v-on=\"$listeners\"\n :custom-fields.sync=\"customFields\"\n :errors=\"transaction.errors.notes\"\n :index=\"index\"\n />\n </div>\n <div class=\"col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12\">\n\n <TransactionAttachments\n ref=\"attachments\"\n v-model=\"transaction.attachments\"\n v-on=\"$listeners\"\n :custom-fields.sync=\"customFields\"\n :index=\"index\"\n :transaction_journal_id=\"transaction.transaction_journal_id\"\n :upload-trigger=\"transaction.uploadTrigger\"\n :clear-trigger=\"transaction.clearTrigger\"\n />\n <TransactionLocation\n v-model=\"transaction.location\"\n v-on=\"$listeners\"\n :custom-fields.sync=\"customFields\"\n :errors=\"transaction.errors.location\"\n :index=\"index\"\n />\n\n <TransactionLinks\n v-model=\"transaction.links\"\n v-on=\"$listeners\"\n :custom-fields.sync=\"customFields\"\n :index=\"index\"\n />\n </div>\n\n </div>\n <!-- end of body -->\n </div>\n </div>\n </div>\n </div>\n <!-- end card for extra -->\n <!-- end of card -->\n </div>\n</template>\n\n<script>\n\nimport TransactionDescription from \"./TransactionDescription\";\nimport TransactionDate from \"./TransactionDate\";\nimport TransactionBudget from \"./TransactionBudget\";\nimport TransactionAccount from \"./TransactionAccount\";\nimport SwitchAccount from \"./SwitchAccount\";\nimport TransactionAmount from \"./TransactionAmount\";\nimport TransactionForeignAmount from \"./TransactionForeignAmount\";\nimport TransactionForeignCurrency from \"./TransactionForeignCurrency\";\nimport TransactionCustomDates from \"./TransactionCustomDates\";\nimport TransactionCategory from \"./TransactionCategory\";\nimport TransactionBill from \"./TransactionBill\";\nimport TransactionTags from \"./TransactionTags\";\nimport TransactionPiggyBank from \"./TransactionPiggyBank\";\nimport TransactionInternalReference from \"./TransactionInternalReference\";\nimport TransactionExternalUrl from \"./TransactionExternalUrl\";\nimport TransactionNotes from \"./TransactionNotes\";\nimport TransactionLinks from \"./TransactionLinks\";\nimport TransactionAttachments from \"./TransactionAttachments\";\nimport SplitPills from \"./SplitPills\";\nimport TransactionLocation from \"./TransactionLocation\";\n\nexport default {\n name: \"SplitForm\",\n props: {\n transaction: {\n type: Object,\n required: true\n },\n count: {\n type: Number,\n required: true\n },\n customFields: {\n type: Object,\n required: false\n },\n index: {\n type: Number,\n required: true\n },\n date: {\n type: String,\n required: true\n },\n transactionType: {\n type: String,\n required: true\n },\n sourceAllowedTypes: {\n type: Array,\n required: false,\n default: function () {\n return [];\n }\n }, // allowed source account types.\n destinationAllowedTypes: {\n type: Array,\n required: false,\n default: function () {\n return [];\n }\n },\n // allow switch?\n allowSwitch: {\n type: Boolean,\n required: false,\n default: false\n }\n\n },\n created() {\n // console.log('SplitForm(' + this.index + ')');\n },\n methods: {\n removeTransaction: function () {\n // console.log('Will remove transaction ' + this.index);\n this.$emit('remove-transaction', {index: this.index});\n },\n },\n computed: {\n splitDate: function () {\n return this.date;\n },\n sourceAccount: function () {\n //console.log('computed::sourceAccount(' + this.index + ')');\n return {\n id: this.transaction.source_account_id,\n name: this.transaction.source_account_name,\n type: this.transaction.source_account_type,\n };\n //console.log(JSON.stringify(value));\n //return value;\n },\n destinationAccount: function () {\n //console.log('computed::destinationAccount(' + this.index + ')');\n return {\n id: this.transaction.destination_account_id,\n name: this.transaction.destination_account_name,\n type: this.transaction.destination_account_type,\n };\n //console.log(JSON.stringify(value));\n //return value;\n },\n hasMetaFields: function () {\n let requiredFields = [\n 'internal_reference',\n 'notes',\n 'attachments',\n 'external_uri',\n 'location',\n 'links',\n ];\n for (let field in this.customFields) {\n if (this.customFields.hasOwnProperty(field)) {\n if (requiredFields.includes(field)) {\n if (true === this.customFields[field]) {\n return true;\n }\n }\n }\n }\n return false;\n }\n },\n components: {\n TransactionLocation,\n SplitPills,\n TransactionAttachments,\n TransactionNotes,\n TransactionExternalUrl,\n TransactionInternalReference,\n TransactionPiggyBank,\n TransactionTags,\n TransactionLinks,\n TransactionBill,\n TransactionCategory,\n TransactionCustomDates,\n TransactionForeignCurrency,\n TransactionForeignAmount,\n TransactionAmount,\n SwitchAccount,\n TransactionAccount,\n TransactionBudget,\n TransactionDescription,\n TransactionDate\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./SplitForm.vue?vue&type=template&id=8d9e74a0&\"\nimport script from \"./SplitForm.vue?vue&type=script&lang=js&\"\nexport * from \"./SplitForm.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 null,\n null\n \n)\n\nexport default component.exports","<!--\n - SplitPills.vue\n - Copyright (c) 2021 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 v-if=\"transactions.length > 1\" class=\"row\">\n <div class=\"col\">\n <!-- tabs -->\n <ul class=\"nav nav-pills ml-auto p-2\" id=\"transactionTabs\">\n <li v-for=\"(transaction, index) in this.transactions\" class=\"nav-item\"><a :class=\"'nav-link' + (0 === index ? ' active' : '')\"\n :href=\"'#split_' + index\"\n data-toggle=\"pill\">\n <span v-if=\"'' !== transaction.description\">{{ transaction.description }}</span>\n <span v-if=\"'' === transaction.description\">Split {{ index + 1 }}</span>\n </a></li>\n </ul>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"SplitPills\",\n props: {\n transactions: {\n type: Array,\n required: true,\n default: function() {\n return [];\n }\n },\n count: {\n type: Number,\n required: true\n },\n }\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SplitPills.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SplitPills.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SplitPills.vue?vue&type=template&id=6bee3f8d&\"\nimport script from \"./SplitPills.vue?vue&type=script&lang=js&\"\nexport * from \"./SplitPills.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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.transactions.length > 1)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('ul',{staticClass:\"nav nav-pills ml-auto p-2\",attrs:{\"id\":\"transactionTabs\"}},_vm._l((this.transactions),function(transaction,index){return _c('li',{staticClass:\"nav-item\"},[_c('a',{class:'nav-link' + (0 === index ? ' active' : ''),attrs:{\"href\":'#split_' + index,\"data-toggle\":\"pill\"}},[('' !== transaction.description)?_c('span',[_vm._v(_vm._s(transaction.description))]):_vm._e(),_vm._v(\" \"),('' === transaction.description)?_c('span',[_vm._v(\"Split \"+_vm._s(index + 1))]):_vm._e()])])}),0)])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"text-xs d-none d-lg-block d-xl-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('firefly.split_transaction_title'))+\"\\n \")]),_vm._v(\" \"),_c('vue-typeahead-bootstrap',{attrs:{\"data\":_vm.descriptions,\"inputClass\":_vm.errors.length > 0 ? 'is-invalid' : '',\"minMatchingChars\":3,\"placeholder\":_vm.$t('firefly.split_transaction_title'),\"serializer\":function (item) { return item.description; },\"showOnFocus\":true,\"inputName\":\"group_title\"},on:{\"input\":_vm.lookupDescription},model:{value:(_vm.title),callback:function ($$v) {_vm.title=$$v},expression:\"title\"}},[_c('template',{slot:\"append\"},[_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"tabindex\":\"-1\",\"type\":\"button\"},on:{\"click\":_vm.clearDescription}},[_c('span',{staticClass:\"far fa-trash-alt\"})])])])],2),_vm._v(\" \"),(_vm.errors.length > 0)?_c('span',_vm._l((_vm.errors),function(error){return _c('span',{staticClass:\"text-danger small\"},[_vm._v(_vm._s(error)),_c('br')])}),0):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - TransactionGroupTitle.vue\n - Copyright (c) 2021 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 class=\"form-group\">\n <div class=\"text-xs d-none d-lg-block d-xl-block\">\n {{ $t('firefly.split_transaction_title') }}\n </div>\n <vue-typeahead-bootstrap\n v-model=\"title\"\n :data=\"descriptions\"\n :inputClass=\"errors.length > 0 ? 'is-invalid' : ''\"\n :minMatchingChars=\"3\"\n :placeholder=\"$t('firefly.split_transaction_title')\"\n :serializer=\"item => item.description\"\n :showOnFocus=true\n inputName=\"group_title\"\n @input=\"lookupDescription\"\n >\n <template slot=\"append\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary\" tabindex=\"-1\" type=\"button\" v-on:click=\"clearDescription\"><span class=\"far fa-trash-alt\"></span></button>\n </div>\n </template>\n </vue-typeahead-bootstrap>\n\n <span v-if=\"errors.length > 0\">\n <span v-for=\"error in errors\" class=\"text-danger small\">{{ error }}<br/></span>\n </span>\n\n </div>\n</template>\n\n<script>\nimport VueTypeaheadBootstrap from 'vue-typeahead-bootstrap';\nimport {debounce} from \"lodash\";\n\nexport default {\n props: ['value', 'errors'],\n name: \"TransactionGroupTitle\",\n components: {VueTypeaheadBootstrap},\n data() {\n return {\n descriptions: [],\n initialSet: [],\n title: this.value,\n emitEvent: true\n }\n },\n\n created() {\n axios.get(this.getACURL(''))\n .then(response => {\n this.descriptions = response.data;\n this.initialSet = response.data;\n });\n },\n watch: {\n value: function (value) {\n this.title = value;\n },\n title: function (value) {\n this.$emit('set-group-title', value);\n }\n },\n methods: {\n clearDescription: function () {\n this.title = '';\n },\n getACURL: function (query) {\n // update autocomplete URL:\n return document.getElementsByTagName('base')[0].href + 'api/v1/autocomplete/transactions?query=' + query;\n },\n lookupDescription: debounce(function () {\n // update autocomplete URL:\n axios.get(this.getACURL(this.title))\n .then(response => {\n this.descriptions = response.data;\n })\n }, 300)\n }\n}\n</script>\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionGroupTitle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransactionGroupTitle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TransactionGroupTitle.vue?vue&type=template&id=4bdb785a&\"\nimport script from \"./TransactionGroupTitle.vue?vue&type=script&lang=js&\"\nexport * from \"./TransactionGroupTitle.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 null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} |