mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
1 line
352 KiB
Plaintext
Executable File
1 line
352 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/Edit.vue","webpack:///./src/components/transactions/Edit.vue?2e9d","webpack:///./src/components/transactions/Edit.vue","webpack:///./src/components/transactions/Edit.vue?78b4","webpack:///./src/pages/transactions/edit.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","created","this","groupId","parts","getTransactionGroup","getAllowedOpposingTypes","getCustomFields","successMessage","errorMessage","warningMessage","type","default","originalTransactions","originalGroupTitle","groupTitleErrors","customFields","Object","returnedGroupId","returnedGroupTitle","date","originalDate","submittedTransaction","submittedAttachments","inError","submittedAttCount","enableSubmit","stayHere","forceTransactionSubmission","components","Alert","SplitPills","SplitForm","TransactionGroupTitle","watch","finaliseSubmission","methods","parseTransactionGroup","group_title","description","hasOwnProperty","i","test","result","parseLinks","transaction_journal_id","parseTransaction","array","charAt","toUpperCase","source_type","destination_type","substring","source_account_id","source_id","source_account_name","source_name","source_account_type","destination_account_id","destination_id","destination_account_name","destination_name","destination_account_type","amount","currency_id","foreign_amount","foreign_currency_id","category","category_name","budget_id","bill_id","tags","substr","internal_reference","external_url","external_uri","external_id","notes","location","zoom_level","longitude","latitude","journalId","parseLink","opposingId","link","outward_id","linkDirection","promises","Promise","resolve","link_type_id","all","journals","journal","linkTypeId","direction","transaction_group_id","responses","currency_code","uploadedAttachment","key","storeLocation","zoomLevel","lng","lat","storeAccountValue","storeDate","storeField","removeTransaction","tab","storeGroupTitle","selectedAttachments","event","preventDefault","submitTransaction","submission","shouldSubmit","newTransactionCount","diff","toLowerCase","currentTransaction","basicFields","ii","fieldName","originalTransaction","submissionFieldName","currentTag","text","shouldLinks","shouldUpload","keys","submitUpdate","submitData","put","url","handleSubmissionResponse","reverse","submitLinks","deleteAllOriginalLinks","submitAttachments","uploadTrigger","hasAttachments","anyAttachments","$t","href","clearTrigger","compareLinks","compare","parseErrors","message","transactionIndex","split","deleteOriginalLinks","transaction","links","newLinks","originalLinks","submitNewLinks","inward_id","linkObject","currentLink","post","submitTransactionLinksX","finalizeSubmitX","submittedLinks","_vm","_h","$createElement","_c","_self","attrs","_v","on","staticClass","_l","$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","Edit","beforeCreate","$store","$mount","source","destination","currency","foreign_currency","custom_dates","budget","bill","piggy_bank","source_account_currency_id","source_account_currency_code","source_account_currency_symbol","destination_account_currency_id","destination_account_currency_code","destination_account_currency_symbol","attachments","source_account","name_with_balance","currency_name","currency_decimal_places","destination_account","piggy_bank_id","___CSS_LOADER_EXPORT___","class","descriptions","initialSet","getACURL","clearDescription","getElementsByTagName","query","lookupDescription","$emit","item","slot","localTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","systemTimeZone","dateStr","timeStr","localDate","computed","ref","composing","budgetList","emitEvent","collectData","getBudgets","parseBudgets","$$selectedVal","prototype","filter","call","options","o","selected","map","_value","multiple","Number","String","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","current","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","updateTags","tagList","shortList","initItems","clearTimeout","setTimeout","this$1","newTags","piggyList","getPiggies","parsePiggies","piggy","reference","showField","_m","searchResults","include","linkTypes","searching","getLinkTypes","removeLink","getTextForLinkType","selectTransaction","addToSelected","removeFromSelected","selectLinkType","updateSelected","resetModal","search","parseLinkTypes","inward","outward","linkTypeInward","linkTypeOutward","parseSearch","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","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/edit.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 - Edit.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 <Alert :message=\"errorMessage\" type=\"danger\"/>\n <Alert :message=\"successMessage\" type=\"success\"/>\n <Alert :message=\"warningMessage\" type=\"warning\"/>\n\n <form @submit=\"submitTransaction\" autocomplete=\"off\">\n <SplitPills\n :transactions=\"transactions\"\n :count=\"transactions.length\"\n\n />\n\n <div class=\"tab-content\">\n <SplitForm\n v-for=\"(transaction, index) in this.transactions\"\n :index=\"index\"\n v-bind:key=\"transaction.transaction_journal_id\"\n :key=\"transaction.transaction_journal_id\"\n :transaction=\"transaction\"\n :date=\"date\"\n :count=\"transactions.length\"\n :transaction-type=\"transactionType\"\n :source-allowed-types=\"sourceAllowedTypes\"\n :allowed-opposing-types=\"allowedOpposingTypes\"\n :custom-fields=\"customFields\"\n :destination-allowed-types=\"destinationAllowedTypes\"\n :allow-switch=\"false\"\n v-on:uploaded-attachments=\"uploadedAttachment($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 v-on:selected-attachments=\"selectedAttachments($event)\"\n />\n </div>\n\n <!-- bottom buttons etc -->\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\">\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=\"addTransaction\"><span class=\"far fa-clone\"></span>\n {{ $t('firefly.add_another_split') }}\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-info btn-block\" @click=\"submitTransaction\">\n <span v-if=\"enableSubmit\"><span class=\"far fa-save\"></span> {{ $t('firefly.update_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=\"stayHere\" v-model=\"stayHere\" class=\"form-check-input\" type=\"checkbox\">\n <label class=\"form-check-label\" for=\"stayHere\">\n <span class=\"small\">{{ $t('firefly.after_update_create_another') }}</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 {mapMutations} from \"vuex\";\nimport Alert from '../partials/Alert';\nimport SplitPills from \"./SplitPills\";\nimport SplitForm from \"./SplitForm\";\nimport TransactionGroupTitle from \"./TransactionGroupTitle\";\nimport {getDefaultErrors, getDefaultTransaction} from '../../shared/transactions';\n\nconst lodashClonedeep = require('lodash.clonedeep');\n\nexport default {\n name: \"Edit\",\n created() {\n // console.log('Created');\n let parts = window.location.pathname.split('/');\n this.groupId = parseInt(parts[parts.length - 1]);\n this.transactions = [];\n this.getTransactionGroup();\n this.getAllowedOpposingTypes();\n this.getCustomFields();\n },\n data() {\n return {\n successMessage: {type: String, default: ''},\n errorMessage: {type: String, default: ''},\n warningMessage: {type: String, default: ''},\n\n // transaction props\n transactions: {\n type: Array,\n default: function () {\n return [];\n }\n },\n originalTransactions: {\n type: Array,\n default: function () {\n return [];\n }\n },\n groupTitle: {type: String, default: ''},\n originalGroupTitle: {type: String, default: ''},\n transactionType: {type: String, default: 'any'},\n groupId: {type: Number, default: 0},\n\n // errors in the group title:\n groupTitleErrors: {\n type: Array,\n default: function () {\n return [];\n }\n },\n\n // which custom fields to show\n customFields: {\n type: Object,\n default: function () {\n return {};\n }\n },\n\n // group ID + title once submitted:\n returnedGroupId: {type: Number, default: 0},\n returnedGroupTitle: {type: String, default: ''},\n\n // date and time of the transaction,\n date: {type: String, default: ''},\n originalDate: {type: String, default: ''},\n\n // things the process is done working on (3 phases):\n submittedTransaction: {type: Boolean, default: false},\n // submittedLinks: false,\n submittedAttachments: {type: Number, default: -1}, // -1 = no attachments, 0 = uploading, 1 = uploaded\n inError: {type: Boolean, default: 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 type: Object,\n default: function () {\n return {};\n }\n },\n\n // meta data for accounts\n allowedOpposingTypes: {\n type: Object,\n default: function () {\n return {};\n }\n },\n destinationAllowedTypes: {\n type: Array,\n default: function () {\n return [];\n }\n },\n sourceAllowedTypes: {\n type: Array,\n default: function () {\n return [];\n }\n },\n\n // states for the form (makes sense right)\n enableSubmit: true,\n stayHere: false,\n\n // force the submission (in case of deletes)\n forceTransactionSubmission: false\n\n }\n },\n components: {\n Alert,\n SplitPills,\n SplitForm,\n TransactionGroupTitle\n },\n\n watch: {\n submittedAttachments: function () {\n this.finaliseSubmission();\n }\n },\n\n methods: {\n ...mapMutations('transactions/create', ['updateField',]),\n /**\n * Grab transaction group from URL and submit GET.\n */\n getTransactionGroup: function () {\n // console.log('getTransactionGroup');\n axios.get('./api/v1/transactions/' + this.groupId)\n .then(response => {\n this.parseTransactionGroup(response.data);\n }\n ).catch(error => {\n //console.log('I failed :(');\n //console.log(error);\n });\n },\n /**\n * Parse transaction group. Title is easy, transactions have their own method.\n * @param response\n */\n parseTransactionGroup: function (response) {\n // console.log('Will now parse');\n // console.log(response);\n let attributes = response.data.attributes;\n let transactions = attributes.transactions.reverse();\n this.groupTitle = attributes.group_title;\n this.originalGroupTitle = attributes.group_title;\n\n this.transactions = [];\n this.originalTransactions = [];\n\n\n //this.returnedGroupId = parseInt(response.data.id);\n this.returnedGroupTitle = null === this.originalGroupTitle ? response.data.attributes.transactions[0].description : this.originalGroupTitle;\n\n for (let i in transactions) {\n if (transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n // console.log('Parsing transaction nr ' + i);\n let result = this.parseTransaction(parseInt(i), transactions[i]);\n this.transactions.push(result);\n this.originalTransactions.push(lodashClonedeep(result));\n // pick up the links of this transaction:\n this.parseLinks(parseInt(result.transaction_journal_id), parseInt(i));\n }\n }\n },\n /**\n * Parse a single transaction.\n *\n * @param index\n * @param array\n */\n parseTransaction: function (index, array) {\n //console.log('index: ' + index);\n if (0 === index) {\n this.transactionType = array.type.charAt(0).toUpperCase() + array.type.slice(1);\n\n // See reference nr. 5\n this.sourceAllowedTypes = [array.source_type];\n this.destinationAllowedTypes = [array.destination_type];\n this.date = array.date.substring(0, 16);\n this.originalDate = array.date.substring(0, 16);\n }\n let result = getDefaultTransaction();\n // parsing here:\n result.description = array.description;\n result.transaction_journal_id = parseInt(array.transaction_journal_id);\n // accounts:\n result.source_account_id = array.source_id;\n result.source_account_name = array.source_name;\n result.source_account_type = array.source_type;\n\n result.destination_account_id = array.destination_id;\n result.destination_account_name = array.destination_name;\n result.destination_account_type = array.destination_type;\n\n // amount:\n result.amount = array.amount;\n result.currency_id = array.currency_id;\n result.foreign_amount = array.foreign_amount;\n result.foreign_currency_id = array.foreign_currency_id;\n\n // meta data\n result.category = array.category_name;\n result.budget_id = array.budget_id;\n result.bill_id = array.bill_id ?? 0;\n\n result.tags = array.tags;\n\n // optional date fields (6x):\n result.interest_date = array.interest_date ? array.interest_date.substr(0, 10) : '';\n result.book_date = array.book_date ? array.book_date.substr(0, 10) : '';\n result.process_date = array.process_date ? array.process_date.substr(0, 10) : '';\n result.due_date = array.due_date ? array.due_date.substr(0, 10) : '';\n result.payment_date = array.payment_date ? array.payment_date.substr(0, 10) : '';\n result.invoice_date = array.invoice_date ? array.invoice_date.substr(0, 10) : '';\n\n // optional other fields:\n result.internal_reference = array.internal_reference;\n result.external_url = array.external_uri;\n result.external_id = array.external_id;\n result.notes = array.notes;\n // location:\n result.location = {\n zoom_level: array.zoom_level,\n longitude: array.longitude,\n latitude: array.latitude,\n };\n result.zoom_level = array.zoom_level;\n result.longitude = array.longitude;\n result.latitude = array.latitude;\n // error handling\n result.errors = getDefaultErrors();\n return result;\n },\n /**\n * Get the links of this transaction group from the API.\n */\n parseLinks: function (journalId, index) {\n axios.get('./api/v1/transaction-journals/' + journalId + '/links')\n .then(response => {\n let links = response.data.data;\n for (let i in links) {\n if (links.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n this.parseLink(links[i], journalId, index);\n }\n }\n });\n },\n\n /**\n * Process individual link from the API.\n */\n parseLink: function (link, journalId, index) {\n let promises = [];\n let opposingId = parseInt(link.attributes.inward_id);\n let linkDirection = 'inward';\n if (opposingId === journalId) {\n opposingId = parseInt(link.attributes.outward_id);\n linkDirection = 'outward';\n }\n // add meta data to promise context.\n promises.push(Promise.resolve(\n {\n link: link,\n journalId: journalId,\n opposingId: opposingId,\n index: index,\n direction: linkDirection\n }\n ));\n\n\n // get stuff from the API:\n promises.push(axios.get('./api/v1/transaction-journals/' + opposingId));\n promises.push(axios.get('./api/v1/transaction_links/' + link.attributes.link_type_id));\n\n Promise.all(promises).then(responses => {\n let journals = responses[1].data.data.attributes.transactions;\n let opposingId = responses[0].opposingId;\n let journal = {};\n // loop over journals to get the correct one:\n for (let i in journals) {\n if (journals.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n if (journals[i].transaction_journal_id === opposingId) {\n journal = journals[i];\n }\n }\n }\n let index = responses[0].index;\n let direction = responses[0].direction;\n let linkTypeId = responses[2].data.data.id;\n let object = {\n id: link.id,\n link_type_id: linkTypeId + '-' + direction,\n transaction_group_id: responses[1].data.data.id,\n transaction_journal_id: journal.transaction_journal_id,\n description: journal.description,\n type: journal.type,\n currency_code: journal.currency_code,\n amount: journal.amount\n };\n this.transactions[index].links.push(object);\n this.originalTransactions[index].links.push(object);\n });\n },\n /**\n * Get API value.\n */\n getAllowedOpposingTypes: function () {\n axios.get('./api/v1/configuration/firefly.allowed_opposing_types')\n .then(response => {\n this.allowedOpposingTypes = response.data.data.value;\n });\n },\n /**\n * Get API value.\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 uploadedAttachment: function (payload) {\n //console.log('event: uploadedAttachment');\n //console.log(payload);\n this.submittedAttachments = 0;\n // console.log('Triggered uploadedAttachment(' + journalId + ')');\n let key = 'str' + payload;\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 storeLocation: function (payload) {\n this.transactions[payload.index].zoom_level = payload.zoomLevel;\n this.transactions[payload.index].longitude = payload.lng;\n this.transactions[payload.index].latitude = payload.lat;\n },\n storeAccountValue: function (payload) {\n let direction = payload.direction;\n let index = payload.index;\n this.transactions[index][direction + '_account_id'] = payload.id;\n this.transactions[index][direction + '_account_type'] = payload.type;\n this.transactions[index][direction + '_account_name'] = payload.name;\n },\n storeDate: function (payload) {\n this.date = payload.date;\n },\n storeField: function (payload) {\n let field = payload.field;\n if ('category' === field) {\n field = 'category_name';\n }\n this.transactions[payload.index][field] = payload.value;\n\n },\n removeTransaction: function (payload) {\n // console.log('removeTransaction()');\n // console.log('length : ' + this.transactions.length);\n // console.log('Remove index: ' + payload.index);\n\n let index = 0;\n for (let i in this.transactions) {\n if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n // console.log('Now at index: ' + i);\n if (index === payload.index) {\n this.forceTransactionSubmission = true;\n //console.log('Delete!');\n this.transactions.splice(index, 1);\n //console.log(delete this.transactions[i]);\n }\n index++;\n }\n }\n $('#transactionTabs li:first-child a').tab('show');\n // console.log(this.transactions);\n // this.transactions.splice(payload.index, 1);\n // console.log('length: ' + this.transactions.length);\n\n // this.originalTransactions.splice(payload.index, 1);\n // this kills the original transactions.\n //this.originalTransactions = [];\n },\n storeGroupTitle: function (payload) {\n this.groupTitle = payload;\n },\n selectedAttachments: function (payload) {\n //console.log('Now in selectedAttachments()');\n for (let i in this.transactions) {\n if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n // console.log('Payload is');\n // console.log(payload);\n if (parseInt(this.transactions[i].transaction_journal_id) === parseInt(payload.id)) {\n // console.log('selectedAttachments ' + payload);\n this.transactions[i].selectedAttachments = true;\n }\n }\n }\n },\n addTransaction: function (event) {\n event.preventDefault();\n let newTransaction = getDefaultTransaction();\n newTransaction.errors = getDefaultErrors();\n this.transactions.push(newTransaction);\n },\n submitTransaction: function (event) {\n // console.log('submitTransaction()');\n event.preventDefault();\n this.enableSubmit = false;\n let submission = {transactions: []};\n\n // parse data to see if we should submit anything at all:\n let shouldSubmit = false;\n let shouldLinks = false;\n let shouldUpload = false;\n\n // if the group title has changed, should submit:\n if (this.groupTitle !== this.originalGroupTitle) {\n submission.group_title = this.groupTitle;\n shouldSubmit = true;\n }\n\n // if something with the group title:\n let newTransactionCount = this.transactions.length;\n if (newTransactionCount > 1 && typeof submission.group_title === 'undefined' && (null === this.originalGroupTitle || '' === this.originalGroupTitle)) {\n submission.group_title = this.transactions[0].description;\n shouldSubmit = true;\n }\n\n // loop each transaction (edited by the user):\n // console.log('Start of loop submitTransaction');\n for (let i in this.transactions) {\n // console.log('Index ' + i);\n if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n // console.log('Has index ' + i);\n // original transaction present:\n let currentTransaction = this.transactions[i];\n let originalTransaction = this.originalTransactions.hasOwnProperty(i) ? this.originalTransactions[i] : {};\n // the difference:\n let diff = {};\n\n // compare basic fields:\n let basicFields = ['description', 'source_account_id', 'source_account_name', 'destination_account_id', 'destination_account_name', 'amount', 'foreign_amount', 'foreign_currency_id', 'category_name', 'budget_id', 'bill_id', 'interest_date', 'book_date', 'due_date', 'payment_date', 'invoice_date', 'external_url', 'internal_reference', 'external_id', 'notes', 'zoom_level', 'longitude', 'latitude'];\n\n // source and destination are overruled in some cases:\n if (i > 0) {\n // console.log('i > 0');\n diff.type = this.transactionType.toLowerCase();\n if ('deposit' === this.transactionType.toLowerCase() || 'transfer' === this.transactionType.toLowerCase()) {\n // set destination to be whatever is in transaction zero:\n // of the edited transaction\n currentTransaction.destination_account_name = this.transactions[0].destination_account_name;\n currentTransaction.destination_account_id = this.transactions[0].destination_account_id;\n // console.log('Destination is now: #' + currentTransaction.destination_account_id + ': ' + currentTransaction.destination_account_name);\n }\n\n if ('withdrawal' === this.transactionType.toLowerCase() || 'transfer' === this.transactionType.toLowerCase()) {\n // set source to be whatever is in transaction zero:\n currentTransaction.source_account_name = this.transactions[0].source_account_name;\n currentTransaction.source_account_id = this.transactions[0].source_account_id;\n // console.log('Source is now: #' + currentTransaction.source_account_id + ': ' + currentTransaction.source_account_name);\n }\n }\n\n // loop the basic fields and verify\n for (let ii in basicFields) {\n if (basicFields.hasOwnProperty(ii) && /^0$|^[1-9]\\d*$/.test(ii) && ii <= 4294967294) {\n let fieldName = basicFields[ii];\n // console.log('Now at field ' + fieldName);\n let submissionFieldName = fieldName;\n\n // if the original is undefined and the new one is null, just skip it.\n if (currentTransaction[fieldName] === null && 'undefined' === typeof originalTransaction[fieldName]) {\n // console.log('Will continue and skip');\n continue;\n }\n\n if (currentTransaction[fieldName] !== originalTransaction[fieldName] || true === this.forceTransactionSubmission) {\n // console.log('we continue');\n // some fields are ignored:\n if ('foreign_amount' === submissionFieldName && '' === currentTransaction[fieldName]) {\n // console.log('we skip!');\n continue;\n }\n if ('foreign_currency_id' === submissionFieldName && 0 === currentTransaction[fieldName]) {\n // console.log('we skip!');\n continue;\n }\n if ('foreign_currency_id' === submissionFieldName && '0' === currentTransaction[fieldName]) {\n // console.log('we skip!');\n continue;\n }\n\n // some field names may need to be different. little basic but it works:\n if ('source_account_id' === submissionFieldName) {\n submissionFieldName = 'source_id';\n }\n if ('source_account_name' === submissionFieldName) {\n submissionFieldName = 'source_name';\n }\n if ('destination_account_id' === submissionFieldName) {\n submissionFieldName = 'destination_id';\n }\n if ('destination_account_name' === submissionFieldName) {\n submissionFieldName = 'destination_name';\n }\n\n // otherwise save them and remember them for submission:\n diff[submissionFieldName] = currentTransaction[fieldName];\n shouldSubmit = true;\n //console.log('Should submit is now TRUE');\n }\n }\n }\n\n // tags different?\n if (JSON.stringify(currentTransaction.tags) !== JSON.stringify(originalTransaction.tags)) {\n diff.tags = [];\n if (0 !== currentTransaction.tags.length) {\n for (let ii in currentTransaction.tags) {\n if (currentTransaction.tags.hasOwnProperty(ii) && /^0$|^[1-9]\\d*$/.test(ii) && ii <= 4294967294) {\n let currentTag = currentTransaction.tags[ii];\n if (typeof currentTag === 'object' && null !== currentTag) {\n diff.tags.push(currentTag.text);\n }\n if (typeof currentTag === 'string') {\n diff.tags.push(currentTag);\n }\n }\n }\n }\n shouldSubmit = true;\n }\n\n // compare links:\n let newLinks = this.compareLinks(currentTransaction.links);\n let originalLinks = this.compareLinks(originalTransaction.links);\n if (newLinks !== originalLinks) {\n shouldLinks = true;\n }\n if (typeof currentTransaction.selectedAttachments !== 'undefined' && true === currentTransaction.selectedAttachments) {\n shouldUpload = true;\n }\n if (true === shouldSubmit) {\n // set the date to whatever the date is:\n diff.date = this.date;\n }\n\n if (this.date !== this.originalDate) {\n shouldSubmit = true;\n diff.date = this.date;\n }\n\n if (Object.keys(diff).length === 0 && newTransactionCount > 1) {\n // Will submit just the ID!\n diff.transaction_journal_id = originalTransaction.transaction_journal_id;\n submission.transactions.push(lodashClonedeep(diff));\n shouldSubmit = true;\n } else if (Object.keys(diff).length !== 0) {\n // will submit all:\n diff.transaction_journal_id = originalTransaction.transaction_journal_id ?? 0;\n submission.transactions.push(lodashClonedeep(diff));\n shouldSubmit = true;\n }\n // console.log('Should submit index ' + i + '?');\n // console.log(shouldSubmit);\n }\n }\n this.submitUpdate(submission, shouldSubmit, shouldLinks, shouldUpload);\n },\n\n submitData: function (shouldSubmit, submission) {\n // console.log('submitData');\n // console.log(submission);\n if (!shouldSubmit) {\n // console.log('No need to submit transaction.');\n return Promise.resolve({});\n }\n\n const url = './api/v1/transactions/' + this.groupId;\n return axios.put(url, submission);\n\n },\n handleSubmissionResponse: function (response) {\n //console.log('handleSubmissionResponse()');\n // report the transaction is submitted.\n this.submittedTransaction = true;\n let journals = [];\n\n // meanwhile, store the ID and the title in some easy to access variables.\n if (typeof response.data !== 'undefined') {\n this.returnedGroupId = parseInt(response.data.data.id) ?? null;\n this.returnedGroupTitle = null === response.data.data.attributes.group_title ? response.data.data.attributes.transactions[0].description : response.data.data.attributes.group_title;\n\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 } else {\n for (let i in this.transactions) {\n if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n journals.push(this.transactions[i].transaction_journal_id);\n }\n }\n }\n journals = journals.reverse();\n return Promise.resolve({journals: journals});\n },\n submitLinks: function (shouldSubmit) {\n //console.log('submitLinks()');\n if (!shouldSubmit) {\n //console.log('no need!');\n return Promise.resolve({});\n }\n return this.deleteAllOriginalLinks().then(() => this.submitNewLinks());\n },\n submitAttachments: function (shouldSubmit, response) {\n // console.log('submitAttachments');\n if (!shouldSubmit) {\n // console.log('no need!');\n this.submittedAttachments = 1;\n return Promise.resolve({});\n }\n //console.log('Do upload thing!');\n //console.log(response);\n let anyAttachments = false;\n for (let i in this.transactions) {\n if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let transaction = this.transactions[i];\n let journalId = transaction.transaction_journal_id;\n //console.log(journalId);\n if (typeof response !== 'undefined') {\n journalId = response.journals[i]\n }\n\n let hasAttachments = transaction.selectedAttachments;\n this.transactions[i].transaction_journal_id = journalId;\n this.transactions[i].uploadTrigger = true;\n //console.log('Decided that ' + journalId);\n //console.log('upload index ' + i);\n //console.log(hasAttachments);\n if (hasAttachments) {\n anyAttachments = true;\n }\n }\n }\n if (true === anyAttachments) {\n this.submittedAttachments = 0;\n }\n },\n finaliseSubmission: function () {\n // console.log('finaliseSubmission (' + this.submittedAttachments + ')');\n if (0 === this.submittedAttachments) {\n return;\n }\n // console.log('continue (' + this.submittedAttachments + ')');\n // console.log(this.stayHere);\n // console.log(this.inError);\n if (true === this.stayHere && false === this.inError) {\n //console.log('no error + no changes + no redirect');\n // show message:\n this.errorMessage = '';\n this.warningMessage = '';\n this.successMessage = this.$t('firefly.transaction_updated_link', {ID: this.groupId, title: this.returnedGroupTitle});\n\n }\n // no error + changes + redirect\n if (false === this.stayHere && false === this.inError) {\n //console.log('no error + changes + redirect');\n window.location.href = (window.previousURL ?? '/') + '?transaction_group_id=' + this.groupId + '&message=updated';\n }\n\n this.enableSubmit = true;\n this.submittedAttachments = -1;\n this.inError = false;\n\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.transactions[i].clearTrigger = true;\n }\n }\n }\n },\n submitUpdate: function (submission, shouldSubmit, shouldLinks, shouldUpload) {\n // console.log('submitUpdate()');\n this.inError = false;\n\n this.submitData(shouldSubmit, submission)\n .then(this.handleSubmissionResponse) // error or OK\n .then(response => {\n return Promise.all([\n this.submitLinks(shouldLinks, response),\n this.submitAttachments(shouldUpload, response)]);\n }\n )\n .then(this.finaliseSubmission)\n .catch(this.handleSubmissionError);\n\n\n // if (shouldLinks) {\n // promises.push(this.submitTransactionLinks())\n // }\n // if (!shouldLinks) {\n // promises.push(new Promise((resolve) => {\n // resolve({});\n // }));\n // }\n // if (shouldUpload) {\n // console.log('Attachments = Respond to promise from shouldSubmit/!shouldSubmit');\n // promises.push(submissionPromise.then(result => this.uploadAttachments(result)));\n // }\n // if (!shouldUpload) {\n // promises.push(new Promise((resolve) => {\n // resolve({});\n // }));\n // }\n\n // all promises fulfilled:\n // console.log('All promises done, process results?');\n // Promise.all(promises).then(function (responses) {\n // console.log('I believe all ' + promises.length + ' promises fulfilled!');\n // }).catch(function (errors) {\n // console.log('Somebody errored?');\n // });\n\n //\n //\n //\n // if (shouldSubmit) {\n // console.log('shouldSubmit');\n // // do submission:\n // // console.log(JSON.stringify(submission));\n // // console.log(submission);\n // axios.put(url, submission)\n // .then(response => {\n // // console.log('Response is OK!');\n // // report the transaction is submitted.\n // this.submittedTransaction = true;\n //\n // // submit links and attachments (can only be done when the transaction is created)\n // if (shouldLinks) {\n // console.log('Submit links using return from server:');\n // this.submitTransactionLinks();\n // }\n // if (shouldUpload) {\n // // console.log('Need to upload.');\n // this.submitAttachments(response.data.data.attributes.transactions);\n // }\n // // meanwhile, store the ID and the title in some easy to access variables.\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 // }\n // )\n // .catch(error => {\n // console.log('error :(');\n // console.log(error.response.data);\n // // oh noes Firefly III has something to bitch about.\n // this.enableSubmit = true;\n // // report the transaction is submitted.\n // this.submittedTransaction = true;\n // // // also report attachments and links are submitted:\n // this.submittedAttachments = true;\n // this.submittedLinks = true;\n // //\n // // but report an error because error:\n // this.inError = true;\n // this.parseErrors(error.response.data);\n // }\n // );\n // }\n // if (!shouldSubmit && shouldLinks) {\n // // update links\n // console.log('Submit links using whatever is here:');\n // this.submitTransactionLinks();\n // }\n // if (!shouldSubmit && shouldUpload) {\n // // upload\n // // console.log('Need to upload.');\n // this.submitAttachments(this.transactions);\n // }\n },\n compareLinks: function (array) {\n let compare = [];\n for (let i in array) {\n if (array.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n compare.push(\n {\n amount: array[i].amount,\n currency_code: array[i].currency_code,\n description: array[i].description,\n link_type_id: array[i].link_type_id,\n transaction_group_id: array[i].transaction_group_id,\n type: array[i].type,\n }\n );\n }\n }\n return JSON.stringify(compare);\n },\n // uploadAttachments: function (result) {\n// See reference nr. 6\n // if (0 === Object.keys(result).length) {\n //\n // for (let i in this.transactions) {\n // if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n //\n // //console.log('updateField(' + i + ', transaction_journal_id, ' + result[i].transaction_journal_id + ')');\n // this.updateField({index: i, field: 'transaction_journal_id', value: result[i].transaction_journal_id});\n // }\n // }\n // //console.log('Transactions not changed, use original objects.');\n // } else {\n // //console.log('Transactions changed!');\n // }\n // this.submittedAttachments = 0;\n // },\n\n parseErrors: function (errors) {\n for (let i in this.transactions) {\n if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n this.resetErrors({index: i});\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 setTransactionError: function (payload) {\n this.transactions[payload.index].errors[payload.field] = payload.errors;\n },\n resetErrors(payload) {\n this.transactions[payload.index].errors = lodashClonedeep(getDefaultErrors());\n },\n\n deleteOriginalLinks: function (transaction) {\n let promises = [];\n for (let i in transaction.links) {\n if (transaction.links.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let current = transaction.links[i];\n let url = '/api/v1/transaction_links/' + current.id;\n promises.push(axios.delete(url));\n }\n }\n return Promise.all(promises);\n },\n\n deleteAllOriginalLinks: function () {\n //console.log('deleteAllOriginalLinks()');\n // loop to delete old transaction links.\n let promises = [];\n for (let i in this.transactions) {\n if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n // original transaction present?\n let currentTransaction = this.transactions[i];\n let originalTransaction = this.originalTransactions.hasOwnProperty(i) ? this.originalTransactions[i] : {};\n let newLinks = this.compareLinks(currentTransaction.links);\n let originalLinks = this.compareLinks(originalTransaction.links);\n if (newLinks !== originalLinks) {\n if ('[]' !== originalLinks) {\n promises.push(this.deleteOriginalLinks(originalTransaction));\n }\n } else {\n promises.push(Promise.resolve({}));\n }\n }\n }\n return Promise.all(promises);\n },\n submitNewLinks: function () {\n //console.log('submitNewLinks()');\n let promises = [];\n for (let i in this.transactions) {\n if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\\d*$/.test(i) && i <= 4294967294) {\n let currentTransaction = this.transactions[i];\n for (let ii in currentTransaction.links) {\n if (currentTransaction.links.hasOwnProperty(ii) && /^0$|^[1-9]\\d*$/.test(ii) && ii <= 4294967294) {\n let currentLink = currentTransaction.links[ii];\n let linkObject = {\n inward_id: currentTransaction.transaction_journal_id,\n outward_id: currentTransaction.transaction_journal_id,\n link_type_id: 'something'\n };\n\n let parts = currentLink.link_type_id.split('-');\n linkObject.link_type_id = parts[0];\n if ('inward' === parts[1]) {\n linkObject.inward_id = currentLink.transaction_journal_id;\n }\n if ('outward' === parts[1]) {\n linkObject.outward_id = currentLink.transaction_journal_id;\n }\n promises.push(axios.post('./api/v1/transaction_links', linkObject));\n }\n }\n }\n }\n return Promise.all(promises);\n },\n /**\n * Submit transaction links.\n */\n submitTransactionLinksX: function () {\n //return this.deleteAllOriginalLinks().then(() => this.submitNewLinks());\n },\n finalizeSubmitX: function () {\n // console.log('now in finalizeSubmit()');\n // console.log('submittedTransaction : ' + this.submittedTransaction);\n // console.log('submittedLinks : ' + this.submittedLinks);\n // console.log('submittedAttachments : ' + this.submittedAttachments);\n\n if (this.submittedTransaction && this.submittedAttachments && this.submittedLinks) {\n // console.log('all true');\n // console.log('inError = ' + this.inError);\n // console.log('stayHere = ' + this.stayHere);\n // console.log('returnedGroupId = ' + this.returnedGroupId);\n\n // no error + no changes + no redirect\n if (true === this.stayHere && false === this.inError && 0 === this.returnedGroupId) {\n // console.log('no error + no changes + no redirect');\n // show message:\n this.errorMessage = '';\n this.successMessage = '';\n // maybe nothing changed in post\n this.warningMessage = this.$t('firefly.transaction_updated_no_changes', {ID: this.returnedGroupId, title: this.returnedGroupTitle});\n }\n\n // no error + no changes + redirect\n if (false === this.stayHere && false === this.inError && 0 === this.returnedGroupId) {\n // console.log('no error + no changes + redirect');\n window.location.href = (window.previousURL ?? '/') + '?transaction_group_id=' + this.groupId + '&message=no_change';\n }\n // no error + changes + no redirect\n if (true === this.stayHere && false === this.inError && 0 !== this.returnedGroupId) {\n // console.log('no error + changes + redirect');\n // show message:\n this.errorMessage = '';\n this.warningMessage = '';\n // maybe nothing changed in post\n this.successMessage = this.$t('firefly.transaction_updated_link', {ID: this.returnedGroupId, title: this.returnedGroupTitle});\n }\n\n // no error + changes + redirect\n if (false === this.stayHere && false === this.inError && 0 !== this.returnedGroupId) {\n // console.log('no error + changes + redirect');\n window.location.href = (window.previousURL ?? '/') + '?transaction_group_id=' + this.groupId + '&message=updated';\n }\n // console.log('end of the line');\n // enable flags:\n this.enableSubmit = true;\n this.submittedTransaction = false;\n this.submittedLinks = false;\n this.submittedAttachments = false;\n this.inError = false;\n\n // reset attachments (always do this)\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// See reference nr. 7\n }\n }\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!./Edit.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!./Edit.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Edit.vue?vue&type=template&id=7a75420e&\"\nimport script from \"./Edit.vue?vue&type=script&lang=js&\"\nexport * from \"./Edit.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('Alert',{attrs:{\"message\":_vm.warningMessage,\"type\":\"warning\"}}),_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:transaction.transaction_journal_id,attrs:{\"index\":index,\"key\":transaction.transaction_journal_id,\"transaction\":transaction,\"date\":_vm.date,\"count\":_vm.transactions.length,\"transaction-type\":_vm.transactionType,\"source-allowed-types\":_vm.sourceAllowedTypes,\"allowed-opposing-types\":_vm.allowedOpposingTypes,\"custom-fields\":_vm.customFields,\"destination-allowed-types\":_vm.destinationAllowedTypes,\"allow-switch\":false},on:{\"uploaded-attachments\":function($event){return _vm.uploadedAttachment($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)},\"selected-attachments\":function($event){return _vm.selectedAttachments($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\"},[_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.addTransaction}},[_c('span',{staticClass:\"far fa-clone\"}),_vm._v(\"\\n \"+_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-info 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.update_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.stayHere),expression:\"stayHere\"}],staticClass:\"form-check-input\",attrs:{\"id\":\"stayHere\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.stayHere)?_vm._i(_vm.stayHere,null)>-1:(_vm.stayHere)},on:{\"change\":function($event){var $$a=_vm.stayHere,$$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.stayHere=$$a.concat([$$v]))}else{$$i>-1&&(_vm.stayHere=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.stayHere=$$c}}}}),_vm._v(\" \"),_c('label',{staticClass:\"form-check-label\",attrs:{\"for\":\"stayHere\"}},[_c('span',{staticClass:\"small\"},[_vm._v(_vm._s(_vm.$t('firefly.after_update_create_another')))])])])])])])])])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * edit.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 Edit from \"../../components/transactions/Edit\";\nimport Vue from \"vue\";\n\nrequire('../../bootstrap');\n\nVue.config.productionTip = false;\n// i18n\nlet i18n = require('../../i18n');\n\nlet props = {};\nconst app = new Vue({\n i18n,\n store,\n render(createElement) {\n return createElement(Edit, {props: props});\n },\n beforeCreate() {\n this.$store.commit('initialiseStore');\n this.$store.dispatch('updateCurrencyPreference');\n },\n }).$mount('#transactions_edit');\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":""} |