{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?9b05","webpack:///./public/img/icons/android-chrome-192x192.png","webpack:///./src/App.vue?6970","webpack:///src/App.vue","webpack:///./src/App.vue?a7d1","webpack:///./src/App.vue?155a","webpack:///./src/registerServiceWorker.js","webpack:///./src/views/HomePage.vue?527d","webpack:///src/views/HomePage.vue","webpack:///./src/views/HomePage.vue?0ca7","webpack:///./src/views/HomePage.vue?fc08","webpack:///./src/router/index.js","webpack:///./src/plugins/vuetify.js","webpack:///./src/main.js","webpack:///./src/components/header.vue?3fbc","webpack:///src/components/header.vue","webpack:///./src/components/header.vue?dfbb","webpack:///./src/components/header.vue","webpack:///./src/javascript/dateManager.js","webpack:///./src/views/HomePage.vue?5b61","webpack:///./src/javascript/globalFunctions.js","webpack:///./src/api/httpCommon.js","webpack:///./src/auth/index.js","webpack:///./src/store/state.js","webpack:///./src/store/mutations.js","webpack:///./src/store/getters.js","webpack:///./src/api/httpGet.js","webpack:///./src/api/httpPost.js","webpack:///./src/api/httpPut.js","webpack:///./src/api/httpDelete.js","webpack:///./src/javascript/itemManager.js","webpack:///./src/store/actions.js","webpack:///./src/store/plugins.js","webpack:///./src/store/storeMain.js","webpack:///./src/javascript/budgetManager.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","staticRenderFns","component","register","process","ready","log","registered","cached","updatefound","updated","offline","staticClass","staticStyle","attrs","_v","_s","homeheadline","homesubheadline","_l","card","title","$vuetify","breakpoint","link","featureDescription","VApp","VCard","VCardTitle","VContainer","VFlex","VImg","VLayout","Vue","use","VueRouter","requiresAuth","routes","path","HomePage","meta","children","redirect","router","base","beforeEach","to","from","next","auth","checkAuth","Vuetify","vuetify","theme","primary","secondary","accent","warning","info","success","Vuelidate","config","productionTip","store","render","h","App","$mount","on","$event","preventDefault","$router","drawer","model","callback","$$v","expression","VAppBar","VBtn","VDivider","VIcon","VList","VListItem","VListItemContent","VListItemGroup","VNavigationDrawer","VSpacer","VSubheader","VToolbarTitle","VToolbar","dateManager","returnDateRange","date","newDate","startDate","endDate","reformatDateFromApi","dates","split","globalFunctions","isNullOrEmpty","dateSplit","daysInMonth","indexOf","nnewDate","returnFormattedDate","Date","isWithinDateRange","start","end","newStart","returnDateLessOneMonth","newEnd","monthMinusOne","oldMonth","month","parseInt","toString","year","getDate","nextDate","previousDate","returnPreviousPeriodRange","settings","period","periodStart","buildPreviousPeriodRangeForWeek","buildPreviousPeriodRangForBiWeekly","buildPreviousPeriodRangeForMonth","buildPreviousPeriodRangeForYear","returnNextPeriodRange","buildNextPeriodRangeForWeek","buildNextPeriodRangForBiWeekly","buildNextPeriodRangeForMonth","buildNextPeriodRangeForYear","returnPeriodRange","buildPeriodRangeForWeek","periodStartDayOfWeek","buildPeriodRangForBiWeekly","periodStartDate","buildPeriodRangeForMonth","periodStartDay","buildPeriodRangeForYear","setDate","formatDateForPeriod","returnEndDateForPeriodWeek","startDay","returnStartDateForPeriodWeek","currentStart","returnEndDateForPeriodBiWeek","StartDate","currentDate","oldStart","returnCurrentStartDateForBiWeekly","getMonth","getFullYear","setMonth","currentDay","setFullYear","sDate","returnFormattedDateFromCalendar","currentDateReached","sentDate","getMonday","day","getDay","diff","ye","Intl","DateTimeFormat","format","mo","da","returnApiPath","baseURL","domain","returnAvailableCurrencies","cur","state","Currencies","currencies","ObjectState","returnAvailablePlaceSold","ps","PlaceSold","placeSold","objectState","returnCategories","cat","Categories","category","categoryName","isIntOrFloat","test","getCurrentDate","currentdate","getCurrentDateForPicker","getCurrentTimeForPicker","getHours","getMinutes","getAccountCurrentAmount","account","acc","accountName","accountAmount","getBudgetCurrentAmount","budget","bud","budgetName","budgetAmount","getNextIdForObject","largest","id","removeDeletedObjectsFromItems","items","stringify","capitalizeFirstLetter","string","charAt","toUpperCase","obj","JSON","parse","viewFilterSearchChanged","speedDial","change","viewSearch","viewFilter","formatMoney","amount","decimalCount","decimal","thousands","Math","abs","isNaN","negativeSign","Number","toFixed","substr","replace","returnCategoriesObject","isNullEmptyOrUndefined","HTTP","axios","headers","Accept","Authorization","localStorage","getItem","user","authenticated","login","refresh_token","access_token","setItem","logout","removeItem","jwt","getAuthHeader","header","getAccessToken","version","AccountType","Accounts","Audit","Bills","Budgets","CurrencyConversions","GCT","Items","Notifications","Transactions","Settings","User","NightMode","switch","topNav","sideNav","itemCard","mutations","initialiseStore","pjson","replaceState","assign","updateStoreWithAccountsDataFromAPI","accounts","ifExist","x","addNewAccountToStore","updateAccountinStore","accountType","accountDescription","accountCurrency","updateStoreAfterPost","markAccountAsDeleted","deleteAccountfromStore","updateStoreWithCategoryDataFromAPI","addNewCategoryToStore","updateCategoryinStore","iconSize","iconData","parentCategory","userDefined","userId","markCategoryAsDeleted","deleteCategoryfromStore","updateStoreWithIncomeDataFromAPI","incomes","Incomes","addNewIncomeToStore","income","updateIncomeinStore","incomeName","incomeType","incomeAmount","incomeDate","comment","repeat","cycle","numberOfCycles","goesOffFirst","markIncomeAsDeleted","deleteIncomefromStore","updateStoreWithExpenseDataFromAPI","expenses","Expenses","addNewExpenseToStore","expense","updateExpenseinStore","expenseName","expenseType","expenseAmount","expenseDate","expenseTime","paymentType","foreignCurrencyAmount","currencyConversion","markExpenseAsDeleted","deleteExpensefromStore","updateStoreWithBudgetDataFromAPI","budgets","addNewBudgetToStore","updateBudgetinStore","budgetType","amountSpent","refillAmount","budgetOverspent","OverspendingRisk","markBudgetAsDeleted","deleteBudgetfromStore","updateStoreWithTransactionDataFromAPI","transactions","addNewTransactionToStore","transaction","updateTransactioninStore","transactionBalances","transactionItems","recurringTransaction","show","transactionType","transactionAmount","currency","transactionDate","transactionTime","changed","transactionName","transferFrom","transferTo","markTransactionAsDeleted","deleteTransactionfromStore","updateStoreWithItemDataFromAPI","addNewItemToStore","item","updateIteminStore","itemName","itemPrice","itemCurrency","isTaxed","taxAmount","dateChanged","updateStoreWithCurrencyDataFromAPI","addNewCurrencyToStore","deleteCurrencyfromStore","updateStoreWithPlaceSoldDataFromAPI","addNewPlaceSoldToStore","updateStoreWithAuditDataFromAPI","audit","addNewAuditToStore","addNewCurrencyConversionToStore","conversion","addNewTransferToStore","transfer","Transfers","updateTransferinStore","transferName","transferAmount","transferDate","transferTime","markTransferAsDeleted","addNewGCTToStore","gct","updateStoreWithUserDataFromAPI","updateSelectPeriodInStore","UpdateNightModeSelection","selection","getters","httpGet","getAccounts","response","catch","getTransactions","getItems","query","getPlaceSold","getBudgets","getCategories","getCurrencies","getAudit","getUser","getPeriod","httpPost","postNewAccount","post","postNewTransaction","postNewItem","postNewPlaceSold","status","postNewBudget","postNewCurrency","postNewCategory","postNewAudit","getNewToken","tokens","httpPut","updateAccount","put","updateTransaction","updateItem","errors","updatePlaceSold","updateBudget","updateCurrency","updateUser","httpDelete","deleteAccount","delete","deleteIncome","deleteItem","deleteBudget","deleteCurrency","itemManager","itemObject","placeSoldLocation","priceList","formatAsItem","parseFloat","formatAllAsItem","newItems","actions","syncStoreWithDatabaseAfterComingOnline","context","makeChangesToAPI","mutationType","dispatch","substring","getDataFromAPIIfNeeded","getDataFromPeriodIfNeeded","getDataFromAccountIfNeeded","getDataFromCurrencyIfNeeded","getDataFromTransactionIfNeeded","getDataFromBudgetIfNeeded","getDataFromCategoryIfNeeded","getDataFromPlaceSoldIfNeeded","getDataFromUserIfNeeded","addDataForAPIIfNeeded","addDataForAccountIfNeeded","newAccounts","addDataForTransactionIfNeeded","newTransactions","addDataForItemIfNeeded","addDataForBudgetIfNeeded","newBudgets","addDataForCurrencyIfNeeded","newCurrencies","addDataForCategoryIfNeeded","newCategories","addDataForPlaceSoldIfNeeded","newplaces","updateDataForAPIIfNeeded","updateDataForAccountIfNeeded","updateAccounts","updateDataForTransactionIfNeeded","updateTransactions","updateDataForItemIfNeeded","updateItems","updateDataForBudgetIfNeeded","updateBudgets","deleteDataFromAPIIfNeeded","deleteDataForAccountIfNeeded","deleteAccounts","deleteDataForTransactionIfNeeded","deleteTransactions","IncTransactionsomes","deleteDataForItemIfNeeded","deleteItems","getCategoryDataFromAPI","commit","addNewCategoryToDatabase","categoryData","getPlaceSoldDataFromAPI","addNewPlaceSoldToDatabase","placeSoldData","RetailerName","getAccountDataFromAPI","addNewAccountToDatabase","accountData","updateAccountinDatabase","deleteAccountinDatabase","getTransactionDataFromAPI","addNewTransactionToDatabase","transactionData","updateTransactionInDatabase","deleteTransactionInDatabase","deleteTransaction","getItemDataFromAPI","addNewItemToDatabase","itemData","updateItemInDatabase","deleteIteminDatabase","getBudgetDataFromAPI","addNewBudgetToDatabase","budgetData","formatAllAsBudget","updateBudgetInDatabase","deleteBudgetinDatabase","getCurrencyDataFromAPI","addNewCurrencyToDatabase","currencyData","currencyName","updateCurrencyInDatabase","deleteCurrencyinDatabase","getAuditDataFromAPI","getUserDataFromAPI","getPeriodDataFromAPI","getRefreshToken","refreshToken","token","plugins","subscribe","mutation","Vuex","Store","budgetManager","budgetObject","overspendingRisk","returnBudgets","findBudgetByName","findBudgetById","updateBudgetAmountSpent","budgetBalance","budgetBalances","updateBudgetInStore","increaseBudgetAmountSpent","getActiveBudgetBalance","periodEnd","formatBudgetForViewComponent","budgetBalanceData","formatAsBudget"],"mappings":"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","file":"js/app.3054ba86.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"WidgetSeeMore\":\"WidgetSeeMore\",\"budgetData\":\"budgetData\",\"dashboard\":\"dashboard\",\"settings\":\"settings\",\"changePassword~passwordRecovery~registration\":\"changePassword~passwordRecovery~registration\",\"changePassword\":\"changePassword\",\"passwordRecovery\":\"passwordRecovery\",\"addAccount\":\"addAccount\",\"addCategory\":\"addCategory\",\"registration\":\"registration\",\"addBudget\":\"addBudget\",\"editBudget\":\"editBudget\",\"addTransaction~editTransaction\":\"addTransaction~editTransaction\",\"addTransaction\":\"addTransaction\",\"editTransaction\":\"editTransaction\",\"profile\":\"profile\",\"editAccount\":\"editAccount\",\"login\":\"login\",\"dashboardHome\":\"dashboardHome\",\"editCategory\":\"editCategory\",\"error\":\"error\",\"extensions\":\"extensions\",\"help\":\"help\",\"issues\":\"issues\",\"mainNav\":\"mainNav\",\"notificationSingle\":\"notificationSingle\",\"notifications\":\"notifications\",\"passwordChanged\":\"passwordChanged\",\"reminders\":\"reminders\",\"suggestions\":\"suggestions\",\"viewAccounts~viewBudgets~viewCategory~viewExpense~viewIncomes~viewTransaction~viewTransfer\":\"viewAccounts~viewBudgets~viewCategory~viewExpense~viewIncomes~viewTransaction~viewTransfer\",\"viewAccounts\":\"viewAccounts\",\"viewBudgets\":\"viewBudgets\",\"viewCategory\":\"viewCategory\",\"viewExpense\":\"viewExpense\",\"viewIncomes\":\"viewIncomes\",\"viewTransaction\":\"viewTransaction\",\"viewTransfer\":\"viewTransfer\"}[chunkId]||chunkId) + \".\" + {\"WidgetSeeMore\":\"34d19251\",\"budgetData\":\"eac19bbb\",\"chunk-2f51647c\":\"43497f62\",\"dashboard\":\"0006262b\",\"chunk-633d020a\":\"1c657aa9\",\"settings\":\"76d7a9fb\",\"chunk-71c5bad0\":\"3fa9edf2\",\"changePassword~passwordRecovery~registration\":\"1ffc70e6\",\"changePassword\":\"3dfaa3d5\",\"passwordRecovery\":\"98114185\",\"chunk-35d75fec\":\"47d1e228\",\"addAccount\":\"acda5978\",\"addCategory\":\"bdf46765\",\"chunk-1180eb81\":\"5434b81a\",\"registration\":\"e5da3242\",\"addBudget\":\"6a4e8fdb\",\"editBudget\":\"db4ad0f0\",\"chunk-a60283a8\":\"9f03a820\",\"addTransaction~editTransaction\":\"dbf7454a\",\"addTransaction\":\"9f328770\",\"editTransaction\":\"e3aa0b48\",\"profile\":\"c009b7e0\",\"editAccount\":\"e5e13d3c\",\"login\":\"431b0fff\",\"dashboardHome\":\"2d29eaca\",\"editCategory\":\"f631f03d\",\"error\":\"78973862\",\"extensions\":\"c1c43908\",\"help\":\"0f01d23c\",\"issues\":\"d329103c\",\"mainNav\":\"c6eb58aa\",\"notificationSingle\":\"4d610a4b\",\"notifications\":\"2f720781\",\"passwordChanged\":\"058a26ea\",\"reminders\":\"2ad8dcdb\",\"suggestions\":\"252d8a01\",\"viewAccounts~viewBudgets~viewCategory~viewExpense~viewIncomes~viewTransaction~viewTransfer\":\"85c74135\",\"viewAccounts\":\"38eb2ab8\",\"viewBudgets\":\"5171bcdb\",\"viewCategory\":\"19d18709\",\"viewExpense\":\"8f74c6bf\",\"viewIncomes\":\"32ecfe8d\",\"viewTransaction\":\"ab011a2b\",\"viewTransfer\":\"f44723ec\",\"chunk-2d0a4f01\":\"f8e8802f\",\"chunk-65b20a09\":\"8f50f23f\",\"chunk-65e21587\":\"f04859ad\",\"chunk-341114f5\":\"157f3274\",\"chunk-b5ae4504\":\"de3b441b\",\"chunk-11b0097c\":\"75c28457\",\"chunk-2d0b2128\":\"a661c037\",\"chunk-2d237b07\":\"3898c265\",\"chunk-11de202f\":\"86a31abd\",\"chunk-2d22c19d\":\"d4e8a9bf\",\"chunk-d0366a16\":\"cac28a22\",\"chunk-2d0b6abf\":\"4a3a1895\",\"chunk-2d0dd840\":\"3ca99847\",\"chunk-30e1c9e8\":\"975abd04\",\"chunk-422a73bc\":\"1dc15d9b\",\"chunk-542a3c56\":\"389afcf5\",\"chunk-2d0a405e\":\"fcfbff5f\",\"chunk-2d0da924\":\"5d782ea4\",\"chunk-2d207ecb\":\"43e491f1\",\"chunk-361a7dc0\":\"febe6efc\",\"chunk-2d0c5583\":\"79e2c267\",\"chunk-3f842dee\":\"4ab228ff\",\"chunk-3f35d0c2\":\"9f22c2fe\",\"chunk-e82fb778\":\"718692db\",\"chunk-6299fd94\":\"b74216af\",\"chunk-26022510\":\"0a88cd26\",\"chunk-302fb255\":\"911c32e4\",\"chunk-51f08d5a\":\"e25a4794\",\"chunk-05a7aaff\":\"638f8b7f\",\"chunk-9983abee\":\"0abbff47\",\"chunk-2c96af89\":\"ef8c8c49\",\"chunk-2d225f2c\":\"fd9dd75a\",\"chunk-ece3ad5a\":\"9e853f60\",\"chunk-4be97e27\":\"8181327d\",\"chunk-9898f8b8\":\"163d4960\",\"chunk-5ae20cc1\":\"83407e33\",\"chunk-806bcdd8\":\"a0a8dde6\",\"chunk-86435190\":\"6c9eb2f6\",\"chunk-2d0ab4b9\":\"f4989601\",\"chunk-2d0e5f63\":\"39a062f6\",\"chunk-2d20903c\":\"9a63dca2\",\"chunk-2d21d4ee\":\"dd9e9d5c\",\"chunk-3050df7a\":\"10ff3e7d\",\"chunk-5c827148\":\"a0a2b8e6\",\"chunk-3ae781a0\":\"9d87983e\",\"chunk-2d0c2080\":\"dc046dfb\",\"chunk-2d0c7932\":\"1a5602af\",\"chunk-2d0dad42\":\"9ad36885\",\"chunk-35591854\":\"a065f987\",\"chunk-4c1433a9\":\"848f3447\",\"chunk-511752b6\":\"49c30d9c\",\"chunk-cf79b014\":\"acdf382f\",\"chunk-2d0b8e39\":\"cc6b4757\",\"chunk-2d22d9c9\":\"e213017e\",\"chunk-f51c0d88\":\"c987de57\",\"chunk-f9868d8a\":\"94ba4e37\",\"chunk-fa7dce02\":\"e142bf3a\",\"chunk-7ca53e68\":\"dd896f18\",\"chunk-085275d0\":\"3c2992d4\",\"chunk-7185d62d\":\"b1c825a2\",\"chunk-6473c307\":\"24ff4c15\",\"chunk-3511d47c\":\"7534d520\",\"chunk-0669f262\":\"2cd57d97\",\"chunk-07eef290\":\"f83df5e7\",\"chunk-2d0e1bfa\":\"bac551fd\",\"chunk-2d0ab8cb\":\"eec5f46e\",\"chunk-522a8ca9\":\"ddc06cd6\",\"chunk-73b6b390\":\"99a81425\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-2f51647c\":1,\"dashboard\":1,\"chunk-633d020a\":1,\"chunk-71c5bad0\":1,\"changePassword\":1,\"passwordRecovery\":1,\"chunk-35d75fec\":1,\"addAccount\":1,\"addCategory\":1,\"chunk-1180eb81\":1,\"registration\":1,\"addBudget\":1,\"editBudget\":1,\"chunk-a60283a8\":1,\"addTransaction~editTransaction\":1,\"profile\":1,\"editAccount\":1,\"login\":1,\"error\":1,\"viewAccounts~viewBudgets~viewCategory~viewExpense~viewIncomes~viewTransaction~viewTransfer\":1,\"chunk-65b20a09\":1,\"chunk-65e21587\":1,\"chunk-341114f5\":1,\"chunk-b5ae4504\":1,\"chunk-11b0097c\":1,\"chunk-11de202f\":1,\"chunk-d0366a16\":1,\"chunk-30e1c9e8\":1,\"chunk-422a73bc\":1,\"chunk-542a3c56\":1,\"chunk-361a7dc0\":1,\"chunk-3f842dee\":1,\"chunk-3f35d0c2\":1,\"chunk-e82fb778\":1,\"chunk-6299fd94\":1,\"chunk-26022510\":1,\"chunk-302fb255\":1,\"chunk-51f08d5a\":1,\"chunk-05a7aaff\":1,\"chunk-2c96af89\":1,\"chunk-ece3ad5a\":1,\"chunk-4be97e27\":1,\"chunk-9898f8b8\":1,\"chunk-5ae20cc1\":1,\"chunk-806bcdd8\":1,\"chunk-86435190\":1,\"chunk-3050df7a\":1,\"chunk-5c827148\":1,\"chunk-3ae781a0\":1,\"chunk-35591854\":1,\"chunk-4c1433a9\":1,\"chunk-511752b6\":1,\"chunk-cf79b014\":1,\"chunk-f51c0d88\":1,\"chunk-f9868d8a\":1,\"chunk-fa7dce02\":1,\"chunk-7ca53e68\":1,\"chunk-7185d62d\":1,\"chunk-6473c307\":1,\"chunk-522a8ca9\":1,\"chunk-73b6b390\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"WidgetSeeMore\":\"WidgetSeeMore\",\"budgetData\":\"budgetData\",\"dashboard\":\"dashboard\",\"settings\":\"settings\",\"changePassword~passwordRecovery~registration\":\"changePassword~passwordRecovery~registration\",\"changePassword\":\"changePassword\",\"passwordRecovery\":\"passwordRecovery\",\"addAccount\":\"addAccount\",\"addCategory\":\"addCategory\",\"registration\":\"registration\",\"addBudget\":\"addBudget\",\"editBudget\":\"editBudget\",\"addTransaction~editTransaction\":\"addTransaction~editTransaction\",\"addTransaction\":\"addTransaction\",\"editTransaction\":\"editTransaction\",\"profile\":\"profile\",\"editAccount\":\"editAccount\",\"login\":\"login\",\"dashboardHome\":\"dashboardHome\",\"editCategory\":\"editCategory\",\"error\":\"error\",\"extensions\":\"extensions\",\"help\":\"help\",\"issues\":\"issues\",\"mainNav\":\"mainNav\",\"notificationSingle\":\"notificationSingle\",\"notifications\":\"notifications\",\"passwordChanged\":\"passwordChanged\",\"reminders\":\"reminders\",\"suggestions\":\"suggestions\",\"viewAccounts~viewBudgets~viewCategory~viewExpense~viewIncomes~viewTransaction~viewTransfer\":\"viewAccounts~viewBudgets~viewCategory~viewExpense~viewIncomes~viewTransaction~viewTransfer\",\"viewAccounts\":\"viewAccounts\",\"viewBudgets\":\"viewBudgets\",\"viewCategory\":\"viewCategory\",\"viewExpense\":\"viewExpense\",\"viewIncomes\":\"viewIncomes\",\"viewTransaction\":\"viewTransaction\",\"viewTransfer\":\"viewTransfer\"}[chunkId]||chunkId) + \".\" + {\"WidgetSeeMore\":\"31d6cfe0\",\"budgetData\":\"31d6cfe0\",\"chunk-2f51647c\":\"d7df91b3\",\"dashboard\":\"774b92b9\",\"chunk-633d020a\":\"b97556e2\",\"settings\":\"31d6cfe0\",\"chunk-71c5bad0\":\"046842e1\",\"changePassword~passwordRecovery~registration\":\"31d6cfe0\",\"changePassword\":\"4b7f13da\",\"passwordRecovery\":\"8515cc25\",\"chunk-35d75fec\":\"f3fc1ecf\",\"addAccount\":\"d3de4bc2\",\"addCategory\":\"d3de4bc2\",\"chunk-1180eb81\":\"d3de4bc2\",\"registration\":\"330e0c86\",\"addBudget\":\"d3de4bc2\",\"editBudget\":\"d3de4bc2\",\"chunk-a60283a8\":\"8ee10342\",\"addTransaction~editTransaction\":\"0e4b090e\",\"addTransaction\":\"31d6cfe0\",\"editTransaction\":\"31d6cfe0\",\"profile\":\"a16fa804\",\"editAccount\":\"d3de4bc2\",\"login\":\"8515cc25\",\"dashboardHome\":\"31d6cfe0\",\"editCategory\":\"31d6cfe0\",\"error\":\"df7e54c5\",\"extensions\":\"31d6cfe0\",\"help\":\"31d6cfe0\",\"issues\":\"31d6cfe0\",\"mainNav\":\"31d6cfe0\",\"notificationSingle\":\"31d6cfe0\",\"notifications\":\"31d6cfe0\",\"passwordChanged\":\"31d6cfe0\",\"reminders\":\"31d6cfe0\",\"suggestions\":\"31d6cfe0\",\"viewAccounts~viewBudgets~viewCategory~viewExpense~viewIncomes~viewTransaction~viewTransfer\":\"9e682c69\",\"viewAccounts\":\"31d6cfe0\",\"viewBudgets\":\"31d6cfe0\",\"viewCategory\":\"31d6cfe0\",\"viewExpense\":\"31d6cfe0\",\"viewIncomes\":\"31d6cfe0\",\"viewTransaction\":\"31d6cfe0\",\"viewTransfer\":\"31d6cfe0\",\"chunk-2d0a4f01\":\"31d6cfe0\",\"chunk-65b20a09\":\"606ed9bb\",\"chunk-65e21587\":\"606ed9bb\",\"chunk-341114f5\":\"04699255\",\"chunk-b5ae4504\":\"291264f7\",\"chunk-11b0097c\":\"19094ea5\",\"chunk-2d0b2128\":\"31d6cfe0\",\"chunk-2d237b07\":\"31d6cfe0\",\"chunk-11de202f\":\"1fea6533\",\"chunk-2d22c19d\":\"31d6cfe0\",\"chunk-d0366a16\":\"18fec022\",\"chunk-2d0b6abf\":\"31d6cfe0\",\"chunk-2d0dd840\":\"31d6cfe0\",\"chunk-30e1c9e8\":\"3dc9ceb2\",\"chunk-422a73bc\":\"62987a4e\",\"chunk-542a3c56\":\"455b74d7\",\"chunk-2d0a405e\":\"31d6cfe0\",\"chunk-2d0da924\":\"31d6cfe0\",\"chunk-2d207ecb\":\"31d6cfe0\",\"chunk-361a7dc0\":\"8cd46748\",\"chunk-2d0c5583\":\"31d6cfe0\",\"chunk-3f842dee\":\"5cdb3f48\",\"chunk-3f35d0c2\":\"6561e0f6\",\"chunk-e82fb778\":\"d3de4bc2\",\"chunk-6299fd94\":\"02be971f\",\"chunk-26022510\":\"5c7cf0ca\",\"chunk-302fb255\":\"84ce17a1\",\"chunk-51f08d5a\":\"84ce17a1\",\"chunk-05a7aaff\":\"18fec022\",\"chunk-9983abee\":\"31d6cfe0\",\"chunk-2c96af89\":\"18a091a7\",\"chunk-2d225f2c\":\"31d6cfe0\",\"chunk-ece3ad5a\":\"8cd46748\",\"chunk-4be97e27\":\"da90d451\",\"chunk-9898f8b8\":\"b1c7e67b\",\"chunk-5ae20cc1\":\"8632ec41\",\"chunk-806bcdd8\":\"3aa04e19\",\"chunk-86435190\":\"8632ec41\",\"chunk-2d0ab4b9\":\"31d6cfe0\",\"chunk-2d0e5f63\":\"31d6cfe0\",\"chunk-2d20903c\":\"31d6cfe0\",\"chunk-2d21d4ee\":\"31d6cfe0\",\"chunk-3050df7a\":\"606ed9bb\",\"chunk-5c827148\":\"cca85635\",\"chunk-3ae781a0\":\"0643e3c5\",\"chunk-2d0c2080\":\"31d6cfe0\",\"chunk-2d0c7932\":\"31d6cfe0\",\"chunk-2d0dad42\":\"31d6cfe0\",\"chunk-35591854\":\"02be971f\",\"chunk-4c1433a9\":\"9bb75be4\",\"chunk-511752b6\":\"02be971f\",\"chunk-cf79b014\":\"4d7b4523\",\"chunk-2d0b8e39\":\"31d6cfe0\",\"chunk-2d22d9c9\":\"31d6cfe0\",\"chunk-f51c0d88\":\"76d0fa83\",\"chunk-f9868d8a\":\"76d0fa83\",\"chunk-fa7dce02\":\"e9f2d047\",\"chunk-7ca53e68\":\"c4658311\",\"chunk-085275d0\":\"31d6cfe0\",\"chunk-7185d62d\":\"46111584\",\"chunk-6473c307\":\"4b7f13da\",\"chunk-3511d47c\":\"31d6cfe0\",\"chunk-0669f262\":\"31d6cfe0\",\"chunk-07eef290\":\"31d6cfe0\",\"chunk-2d0e1bfa\":\"31d6cfe0\",\"chunk-2d0ab8cb\":\"31d6cfe0\",\"chunk-522a8ca9\":\"a112bb4b\",\"chunk-73b6b390\":\"43dad6c3\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","module.exports = __webpack_public_path__ + \"img/android-chrome-192x192.fd5b2bfe.png\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=34e9bf96&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.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","/* eslint-disable no-console */\r\n\r\nimport { register } from 'register-service-worker'\r\n\r\nif (process.env.NODE_ENV === 'production') {\r\n register(`${process.env.BASE_URL}service-worker.js`, {\r\n ready () {\r\n console.log(\r\n 'App is being served from cache by a service worker.\\n' +\r\n 'For more details, visit https://goo.gl/AFskqB'\r\n )\r\n },\r\n registered () {\r\n console.log('Service worker has been registered.')\r\n },\r\n cached () {\r\n console.log('Content has been cached for offline use.')\r\n },\r\n updatefound () {\r\n console.log('New content is downloading.')\r\n },\r\n updated () {\r\n console.log('New content is available; please refresh.')\r\n },\r\n offline () {\r\n console.log('No internet connection found. App is running in offline mode.')\r\n },\r\n error (error) {\r\n console.error('Error during service worker registration:', error)\r\n }\r\n })\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',[_c('div',{staticClass:\"BackgroundStyle-2\",staticStyle:{\"height\":\"100%\"}},[_c('Header'),_c('v-container',{staticClass:\"pa-5\",attrs:{\"grid-list-md\":\"\"}},[_c('v-layout',{staticStyle:{\"padding-top\":\"65px\"},attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\",\"md4\":\"\",\"text-xs-center\":\"\"}},[_c('v-layout',{attrs:{\"justify-center\":\"\",\"align-center\":\"\"}},[_c('v-flex',{attrs:{\"shrink\":\"\"}},[_c('img',{staticClass:\"img-circle\",attrs:{\"src\":require(\"../../public/img/icons/android-chrome-192x192.png\"),\"alt\":\"Mww Logo\",\"width\":\"100%\"}})])],1)],1),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\",\"md8\":\"\"}},[_c('div',{staticClass:\"pa-1\"},[_c('span',{staticClass:\"homeheadline grey--text\"},[_vm._v(\" \"+_vm._s(_vm.homeheadline)+\" \")])]),_c('div',{staticClass:\"pa-1\"},[_c('span',{staticClass:\"homesubheadline grey--text\"},[_vm._v(_vm._s(_vm.homesubheadline))])])])],1)],1),_c('v-container',{attrs:{\"grid-list-xl\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},_vm._l((_vm.cards),function(card){return _c('v-flex',{key:card.title,attrs:{\"xs12\":\"\",\"sm12\":\"\",\"md4\":\"\"}},[_c('v-card',{staticClass:\"elevation-5\"},[(_vm.$vuetify.breakpoint.mdAndUp)?_c('v-img',{attrs:{\"src\":card.link,\"height\":\"400px\"}}):_c('v-img',{attrs:{\"src\":card.link,\"height\":\"200px\"}}),_c('v-card-title',[_c('div',{staticClass:\"text-xs-center\"},[_c('div',{staticClass:\"headline\"},[_vm._v(\" \"+_vm._s(card.title)+\" \")]),_c('span',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(card.featureDescription))])])])],1)],1)}),1)],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomePage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomePage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HomePage.vue?vue&type=template&id=4e4445c2&scoped=true&\"\nimport script from \"./HomePage.vue?vue&type=script&lang=js&\"\nexport * from \"./HomePage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HomePage.vue?vue&type=style&index=0&id=4e4445c2&scoped=true&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 \"4e4445c2\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VFlex } from 'vuetify/lib/components/VGrid';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VLayout } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VApp,VCard,VCardTitle,VContainer,VFlex,VImg,VLayout})\n","import Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\nimport { auth } from '@/auth/index'\r\nimport HomePage from '@/views/HomePage'\r\n\r\nVue.use(VueRouter)\r\n\r\nlet requiresAuth = true\r\n\r\nconst routes = [\r\n { path: '/', component: HomePage },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n // route level code-splitting\r\n // this generates a separate chunk (login.[hash].js) for this route\r\n // which is lazy-loaded when the route is visited.\r\n component: () => import(/* webpackChunkName: \"login\" */ '../views/userAccount/login.vue')\r\n },\r\n {\r\n path: '/registration',name: 'registration',\r\n component: () => import(/* webpackChunkName: \"registration\" */ '../views/userAccount/registration.vue')\r\n },\r\n {\r\n path: '/passwordRecovery', name: 'passwordRecovery',\r\n component: () => import(/* webpackChunkName: \"passwordRecovery\" */ '../views/userAccount/passwordRecovery.vue')\r\n },\r\n {\r\n path: '/passwordRecoveryChange/:itemId', name: 'passwordRecoveryChange', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"passwordRecovery\" */ '../views/userAccount/passwordRecoveryChange.vue')\r\n },\r\n\r\n //Dashboard Links\r\n {\r\n path: '/dashboard/', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"dashboard\" */ '../views/dashboard/dashboard.vue'),\r\n children:\r\n [\r\n // DashboardHome will be rendered inside Dashboard's \r\n // when /Dashboard is matched\r\n { path: '', redirect: 'home' },\r\n {\r\n path: 'home', name: 'dashboardHome', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"dashboardHome\" */ '../views/dashboard/dashboardHome.vue')\r\n },\r\n\r\n //Widget See More\r\n {\r\n path: 'widgetSeeMoreContainer', name: 'widgetSeeMoreContainer', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"WidgetSeeMore\" */ '../views/dashboard/widgetSeeMoreContainer.vue')\r\n },\r\n\r\n //Profile Page\r\n {\r\n path: 'profile', name: 'profile', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"profile\" */ '../views/userAccount/profile.vue')\r\n },\r\n {\r\n path: 'changePassword', name: 'changePassword', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"changePassword\" */ '../views/userAccount/changePassword.vue')\r\n },\r\n {\r\n path: 'passwordChanged/:itemId', name: 'passwordChanged',\r\n component: () => import(/* webpackChunkName: \"passwordChanged\" */ '../views/userAccount/passwordChanged.vue')\r\n },\r\n\r\n //navigation Pages\r\n {\r\n path: 'budgetData', name: 'budgetData', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"budgetData\" */ '../views/dashboard/navigationPages/budgetData.vue')\r\n },\r\n {\r\n path: 'extensions', name: 'extensions', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"extensions\" */ '../views/dashboard/navigationPages/extensions.vue')\r\n },\r\n {\r\n path: 'mainNav', name: 'mainNav', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"mainNav\" */ '../views/dashboard/navigationPages/mainNav.vue')\r\n },\r\n {\r\n path: 'reminders', name: 'reminders', meta: { requiresAuth }, \r\n component: () => import(/* webpackChunkName: \"reminders\" */ '../views/dashboard/navigationPages/reminders.vue')\r\n },\r\n\r\n //Account Link\r\n {\r\n path: 'account', name: 'viewAccounts', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"viewAccounts\" */ '../views/account/viewAccounts.vue')\r\n },\r\n {\r\n path: 'addAccount', name: 'addAccount', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"addAccount\" */ '../views/account/addAccounts.vue')\r\n },\r\n {\r\n path: 'editAccount/:itemId', name: 'editAccount', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"editAccount\" */ '../views/account/editAccounts.vue')\r\n },\r\n\r\n\r\n //Budget Link\r\n {\r\n path: 'budget', name:'viewBudgets' , meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"viewBudgets\" */ '../views/budget/viewBudgets.vue')\r\n },\r\n {\r\n path: 'addBudget', name: 'addBudget', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"addBudget\" */ '../views/budget/addBudgets.vue')\r\n },\r\n {\r\n path: 'editBudget/:itemId', name:'editBudget', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"editBudget\" */ '../views/budget/editBudgets.vue')\r\n },\r\n\r\n //Income Link\r\n {\r\n path: 'income', name:'viewIncomes', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"viewIncomes\" */ '../views/income/viewIncomes.vue')\r\n },\r\n //{\r\n // path: 'addIncome', name: 'addIncome', meta: { requiresAuth },\r\n // component: () => import(/* webpackChunkName: \"addIncome\" */ '../views/income/addIncomes.vue')\r\n //},\r\n //{\r\n // path: 'EditIncome/:itemId', name: 'editIncome', meta: { requiresAuth },\r\n // component: () => import(/* webpackChunkName: \"editIncome\" */ '../views/income/editIncomes.vue')\r\n //},\r\n\r\n //Expense Link\r\n {\r\n path: 'expense', name: 'viewExpense', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"viewExpense\" */ '../views/expense/viewExpenses.vue')\r\n },\r\n //{\r\n // path: 'addExpense', name: 'addExpense', meta: { requiresAuth },\r\n // component: () => import(/* webpackChunkName: \"addExpense\" */ '../views/expense/addExpenses.vue')\r\n //},\r\n //{\r\n // path: 'editExpense/:itemId', name: 'editExpense', meta: { requiresAuth },\r\n // component: () => import(/* webpackChunkName: \"editExpense\" */ '../views/expense/editExpenses.vue')\r\n //},\r\n\r\n //Transaction Link\r\n {\r\n path: 'transaction', name: 'viewTransaction', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"viewTransaction\" */ '../views/transaction/viewTransactions.vue')\r\n },\r\n {\r\n path: 'addTransaction/:itemId', name: 'addTransaction', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"addTransaction\" */ '../views/transaction/addTransaction.vue')\r\n },\r\n {\r\n path: 'editTransaction/:itemId', name: 'editTransaction', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"editTransaction\" */ '../views/transaction/editTransaction.vue')\r\n },\r\n\r\n //Transfer Link\r\n {\r\n path: 'transfer', name: 'viewTransfer', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"viewTransfer\" */ '../views/transfer/viewTransfers.vue')\r\n },\r\n //{\r\n // path: 'addTransfer', name: 'addTransfer', meta: { requiresAuth },\r\n // component: () => import(/* webpackChunkName: \"addTransfer\" */ '../views/transfer/addTransfers.vue')\r\n //},\r\n //{\r\n // path: 'editTransfer/:itemId', name: 'editTransfer', meta: { requiresAuth },\r\n // component: () => import(/* webpackChunkName: \"editTransfer\" */ '../views/transfer/editTransfers.vue')\r\n //},\r\n\r\n //Category Links\r\n {\r\n path: 'category', name: 'viewCategory', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"viewCategory\" */ '../views/administrator/category/viewCategory.vue')\r\n },\r\n {\r\n path: 'addCategory', name: 'addCategory', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"addCategory\" */ '../views/administrator/category/addCategory.vue')\r\n },\r\n {\r\n path: 'editCategory/:itemId', name: 'editCategory', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"editCategory\" */ '../views/administrator/category/editCategory.vue')\r\n },\r\n\r\n //Help Link\r\n {\r\n path: 'help', name: 'help',\r\n component: () => import(/* webpackChunkName: \"help\" */ '../views/help/help.vue')\r\n },\r\n\r\n //Feedback Link\r\n {\r\n path: 'suggestions', name: 'suggestions',\r\n component: () => import(/* webpackChunkName: \"suggestions\" */ '../views/feedback/suggestions.vue')\r\n },\r\n {\r\n path: 'issues', name: 'issues',\r\n component: () => import(/* webpackChunkName: \"issues\" */ '../views/feedback/issues.vue')\r\n },\r\n\r\n //Settings Page\r\n {\r\n path: 'settings', name: 'settings', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"settings\" */ '../views/settings/settings.vue')\r\n },\r\n\r\n //Notifications Page\r\n {\r\n path: 'notifications', name: 'notifications', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"notifications\" */ '../views/notification/notifications.vue')\r\n },\r\n {\r\n path: 'notification/:itemId', name: 'notificationSingle', meta: { requiresAuth },\r\n component: () => import(/* webpackChunkName: \"notificationSingle\" */ '../views/notification/notificationSingle.vue')\r\n },\r\n\r\n //Error Page Link\r\n {\r\n path: \"*\", name: 'derror',\r\n component: () => import(/* webpackChunkName: \"error\" */ '../views/error.vue')\r\n }\r\n ]\r\n },\r\n //Error Page Link\r\n {\r\n path: \"*\", name:'error',\r\n component: () => import(/* webpackChunkName: \"error\" */ '../views/error.vue')\r\n }\r\n]\r\n\r\nlet router = new VueRouter({\r\n mode: 'history',\r\n base: process.env.BASE_URL,\r\n routes\r\n})\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n if (to.meta.requiresAuth) {\r\n if (auth.checkAuth()) {\r\n next()\r\n }\r\n else {\r\n next({ path: '/login' })\r\n }\r\n }\r\n else {\r\n next()\r\n }\r\n})\r\n\r\nexport default router\r\n","import Vue from 'vue';\r\nimport Vuetify from 'vuetify/lib';\r\n\r\nVue.use(Vuetify);\r\n\r\nexport default new Vuetify({\r\n});\r\n","import Vue from 'vue'\r\nimport App from './App.vue'\r\nimport './registerServiceWorker'\r\nimport router from './router'\r\nimport { store } from './store/storeMain';\r\nimport vuetify from './plugins/vuetify';\r\nimport Vuelidate from 'vuelidate';\r\n\r\n\r\nVue.use(vuetify, {\r\n theme: {\r\n primary: \"#2196F3\",\r\n secondary: \"#26A69A\",\r\n accent: \"#80CBC4\",\r\n error: \"#f44336\",\r\n warning: \"#ffeb3b\",\r\n info: \"#2196f3\",\r\n success: \"#4caf50\"\r\n }\r\n});\r\n\r\nVue.use(Vuelidate);\r\n\r\nVue.config.productionTip = false\r\n\r\nnew Vue({\r\n router,\r\n store: store,\r\n vuetify,\r\n render: h => h(App)\r\n}).$mount('#app')\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-app-bar',{staticClass:\"BackgroundStyle-2\",attrs:{\"text\":\"\",\"dark\":\"\",\"fixed\":\"\"}},[_c('v-toolbar-title',[_c('span',[_c('span',{staticStyle:{\"color\":\"orange\"}},[_vm._v(\"MyWallet\")]),_vm._v(\"Watcher\")])]),_c('v-spacer'),_c('v-btn',{staticClass:\"hidden-sm-and-down\",attrs:{\"text\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$router.push({ path: '/dashboard' })}}},[_vm._v(\" Dashboard \")]),_c('v-btn',{staticClass:\"hidden-sm-and-down\",attrs:{\"text\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$router.push({ path: '/login' })}}},[_vm._v(\" Login \")]),_c('v-btn',{staticClass:\"hidden-sm-and-down\",attrs:{\"outlined\":\"\",\"color\":\"orange\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$router.push({ path: '/Registration' })}}},[_vm._v(\" Sign up \")]),_c('v-btn',{staticClass:\"hidden-md-and-up\",attrs:{\"text\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.drawer = !_vm.drawer}}},[_c('v-icon',[_vm._v(\"fas fa-bars\")])],1)],1),_c('v-navigation-drawer',{staticClass:\"BackgroundStyle-2\",attrs:{\"absolute\":\"\",\"temporary\":\"\",\"dark\":\"\"},model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c('v-list',{attrs:{\"subheader\":\"\"}},[_c('v-subheader',[_c('span',{staticStyle:{\"font-size\":\"20px\"}},[_c('span',{staticStyle:{\"color\":\"orange\"}},[_vm._v(\"MyWallet\")]),_vm._v(\"Watcher\")])]),_c('v-divider'),_c('v-list-item-group',[_c('v-list-item',{on:{\"click\":function($event){$event.preventDefault();return _vm.$router.push({ path: '/dashboard' })}}},[_c('v-list-item-content',[_vm._v(\"Dashboard\")])],1),_c('v-list-item',{on:{\"click\":function($event){$event.preventDefault();return _vm.$router.push({ path: '/login' })}}},[_c('v-list-item-content',[_vm._v(\"Login\")])],1),_c('v-list-item',{on:{\"click\":function($event){$event.preventDefault();return _vm.$router.push({ path: '/registration' })}}},[_c('v-list-item-content',[_vm._v(\"Registration\")])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./header.vue?vue&type=template&id=1af81dbd&\"\nimport script from \"./header.vue?vue&type=script&lang=js&\"\nexport * from \"./header.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\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAppBar,VBtn,VDivider,VIcon,VList,VListItem,VListItemContent,VListItemGroup,VNavigationDrawer,VSpacer,VSubheader,VToolbarTitle})\n","import { globalFunctions } from './globalFunctions'\r\n\r\nexport const dateManager = {\r\n\r\n returnDateRange(date) {\r\n\r\n let newDate = {\r\n startDate: '',\r\n endDate: ''\r\n }\r\n\r\n date = this.reformatDateFromApi(date)\r\n\r\n let dates = date.split(\":\")\r\n\r\n if (globalFunctions.isNullOrEmpty(dates[1])) {\r\n let dateSplit = date.split(\"-\")\r\n\r\n if (globalFunctions.isNullOrEmpty(dateSplit[1])) {\r\n newDate.startDate = dateSplit[0] + \"-01-01\"\r\n newDate.endDate = dateSplit[0] + \"-12-31\"\r\n }\r\n else if (globalFunctions.isNullOrEmpty(dateSplit[2])) {\r\n newDate.startDate = dateSplit[0] + \"-\" + dateSplit[1] + \"-01\"\r\n newDate.endDate = dateSplit[0] + \"-\" + dateSplit[1] + \"-\" + this.daysInMonth(dateSplit[0], dateSplit[1])\r\n }\r\n else {\r\n newDate.startDate = dateSplit[0] + \"-\" + dateSplit[1] + \"-\" + dateSplit[2]\r\n newDate.endDate = dateSplit[0] + \"-\" + dateSplit[1] + \"-\" + dateSplit[2]\r\n }\r\n } else {\r\n ////////////////////////////////////////\r\n ///TODO:\r\n ////////////////////////////////////////\r\n }\r\n\r\n return newDate\r\n },\r\n reformatDateFromApi(date) {\r\n if (date.indexOf(' ') !== -1) {\r\n let newDate = date.split(' ')\r\n\r\n if (newDate[0].indexOf('/') !== -1) {\r\n let nnewDate = newDate[0].split('/')\r\n\r\n if (nnewDate[0] < 10) {\r\n nnewDate[0] = \"0\" + nnewDate[0]\r\n }\r\n\r\n if (nnewDate[1] < 10) {\r\n nnewDate[1] = \"0\" + nnewDate[1]\r\n }\r\n\r\n //Changes from Month/Day/Year to Year-Month-Day\r\n //Format is Year-Month-Day\r\n return nnewDate[2] + \"-\" + nnewDate[0] + \"-\" + nnewDate[1] \r\n }\r\n }\r\n\r\n return date\r\n },\r\n returnFormattedDate(date) {\r\n date = this.reformatDateFromApi(date)\r\n\r\n let dateSplit = date.split(\"-\")\r\n\r\n return new Date(dateSplit[0], dateSplit[1], dateSplit[2])\r\n },\r\n isWithinDateRange(start, end, date) {\r\n let newStart = this.returnFormattedDate(this.returnDateLessOneMonth(start))\r\n let newEnd = this.returnFormattedDate(this.returnDateLessOneMonth(end))\r\n let newDate = this.returnFormattedDate(this.returnDateLessOneMonth(date))\r\n\r\n if (newDate >= newStart && newDate <= newEnd) {\r\n return true\r\n }\r\n return false\r\n },\r\n returnDateLessOneMonth(date) {\r\n date = this.reformatDateFromApi(date)\r\n\r\n let dateSplit = date.split(\"-\")\r\n\r\n if (globalFunctions.isNullOrEmpty(dateSplit[1])) {\r\n return this.monthMinusOne(date)\r\n }\r\n\r\n return (dateSplit[0] + \"-\" + this.monthMinusOne(dateSplit[1]) + \"-\" + dateSplit[2])\r\n },\r\n monthMinusOne(oldMonth) {\r\n let month = parseInt(oldMonth) - 1\r\n\r\n return month > 9 ? month : \"0\" + month.toString()\r\n },\r\n daysInMonth(month, year) {\r\n return new Date(year, this.returnDateLessOneMonth(month), 0).getDate();\r\n },\r\n nextDate(date) {\r\n let dateSplit = date.split(\"-\")\r\n\r\n if (globalFunctions.isNullOrEmpty(dateSplit[1])) {\r\n return (parseInt(dateSplit[0]) + 1)\r\n }\r\n else if (globalFunctions.isNullOrEmpty(dateSplit[2])) {\r\n return (dateSplit[0] + \"-\" + (parseInt(dateSplit[1]) + 1))\r\n }\r\n else {\r\n return (dateSplit[0] + \"-\" + dateSplit[1] + \"-\" + (parseInt(dateSplit[2]) + 1))\r\n }\r\n },\r\n previousDate(date) {\r\n let dateSplit = date.split(\"-\")\r\n\r\n if (globalFunctions.isNullOrEmpty(dateSplit[1])) {\r\n return (parseInt(dateSplit[0]) - 1)\r\n }\r\n else if (globalFunctions.isNullOrEmpty(dateSplit[2])) {\r\n return (dateSplit[0] + \"-\" + (parseInt(dateSplit[1]) - 1))\r\n }\r\n else {\r\n return (dateSplit[0] + \"-\" + dateSplit[1] + \"-\" + (parseInt(dateSplit[2]) - 1))\r\n }\r\n },\r\n returnPreviousPeriodRange(settings, period) {\r\n let periodStart = ''\r\n\r\n let dateSplit = period.split(\" - \")\r\n periodStart = new Date(dateSplit[0])\r\n\r\n switch (settings.period) {\r\n case \"Weekly\":\r\n return this.buildPreviousPeriodRangeForWeek(periodStart)\r\n case \"Bi-Weekly\":\r\n return this.buildPreviousPeriodRangForBiWeekly(periodStart)\r\n case \"Monthly\":\r\n return this.buildPreviousPeriodRangeForMonth(periodStart)\r\n case \"Yearly\":\r\n return this.buildPreviousPeriodRangeForYear(periodStart)\r\n }\r\n },\r\n returnNextPeriodRange(settings, period) {\r\n let periodStart = ''\r\n\r\n let dateSplit = period.split(\" - \")\r\n periodStart = new Date(dateSplit[0])\r\n\r\n switch (settings.period) {\r\n case \"Weekly\":\r\n return this.buildNextPeriodRangeForWeek(periodStart)\r\n case \"Bi-Weekly\":\r\n return this.buildNextPeriodRangForBiWeekly(periodStart)\r\n case \"Monthly\":\r\n return this.buildNextPeriodRangeForMonth(periodStart)\r\n case \"Yearly\":\r\n return this.buildNextPeriodRangeForYear(periodStart)\r\n }\r\n },\r\n returnPeriodRange(settings, date) {\r\n switch (settings.period) {\r\n case \"Weekly\":\r\n return this.buildPeriodRangeForWeek(settings.periodStartDayOfWeek, date)\r\n case \"Bi-Weekly\":\r\n return this.buildPeriodRangForBiWeekly(settings.periodStartDayOfWeek, settings.periodStartDate, date)\r\n case \"Monthly\":\r\n return this.buildPeriodRangeForMonth(settings.periodStartDay, date)\r\n case \"Yearly\":\r\n return this.buildPeriodRangeForYear(settings.periodStartDate, date)\r\n }\r\n },\r\n buildPreviousPeriodRangeForWeek(date) {\r\n let start = ''\r\n\r\n start = date.setDate(date.getDate() - 7);\r\n\r\n return this.formatDateForPeriod(start) + \" - \" + this.formatDateForPeriod(this.returnEndDateForPeriodWeek(start))\r\n },\r\n buildNextPeriodRangeForWeek(date) {\r\n let start = ''\r\n\r\n start = date.setDate(date.getDate() + 7);\r\n\r\n return this.formatDateForPeriod(start) + \" - \" + this.formatDateForPeriod(this.returnEndDateForPeriodWeek(start))\r\n },\r\n buildPeriodRangeForWeek(startDay, date) {\r\n let start = ''\r\n\r\n start = this.returnStartDateForPeriodWeek(startDay, date)\r\n\r\n return this.formatDateForPeriod(start) + \" - \" + this.formatDateForPeriod(this.returnEndDateForPeriodWeek(start))\r\n },\r\n buildPreviousPeriodRangForBiWeekly(date) {\r\n let currentStart = ''\r\n\r\n currentStart = date.setDate(date.getDate() - 14);\r\n\r\n return this.formatDateForPeriod(currentStart) + \" - \" + this.formatDateForPeriod(this.returnEndDateForPeriodBiWeek(currentStart))\r\n\r\n },\r\n buildNextPeriodRangForBiWeekly(date) {\r\n let currentStart = ''\r\n\r\n currentStart = date.setDate(date.getDate() + 14);\r\n\r\n return this.formatDateForPeriod(currentStart) + \" - \" + this.formatDateForPeriod(this.returnEndDateForPeriodBiWeek(currentStart))\r\n\r\n },\r\n buildPeriodRangForBiWeekly(startDay, StartDate, currentDate) {\r\n let oldStart = ''\r\n let currentStart = ''\r\n\r\n oldStart = this.returnStartDateForPeriodWeek(startDay, StartDate)\r\n\r\n currentStart = this.returnCurrentStartDateForBiWeekly(oldStart, currentDate)\r\n\r\n return this.formatDateForPeriod(currentStart) + \" - \" + this.formatDateForPeriod(this.returnEndDateForPeriodBiWeek(currentStart))\r\n\r\n },\r\n buildPreviousPeriodRangeForMonth(date) {\r\n let startDate = ''\r\n let endDate = ''\r\n\r\n startDate = new Date(date.getMonth() + \"-\" + date.getDate() + \"-\" + date.getFullYear())\r\n \r\n let end = new Date(startDate)\r\n end.setMonth(end.getMonth() + 1)\r\n endDate = new Date(end + \"-\" + startDate.getDate() + \"-\" + startDate.getFullYear())\r\n endDate.setDate(endDate.getDate() - 1)\r\n\r\n return this.formatDateForPeriod(startDate) + \" - \" + this.formatDateForPeriod(endDate)\r\n },\r\n buildNextPeriodRangeForMonth(date) {\r\n let startDate = ''\r\n let endDate = ''\r\n\r\n startDate = new Date((date.getMonth() + 2) + \"-\" + date.getDate() + \"-\" + date.getFullYear())\r\n\r\n let end = new Date(startDate)\r\n end.setMonth(end.getMonth() + 1)\r\n endDate = new Date(end + \"-\" + startDate.getDate() + \"-\" + startDate.getFullYear())\r\n endDate.setDate(endDate.getDate() - 1)\r\n\r\n return this.formatDateForPeriod(startDate) + \" - \" + this.formatDateForPeriod(endDate)\r\n },\r\n buildPeriodRangeForMonth(startDay, date) {\r\n let currentDay = date.getDate()\r\n let startDate = ''\r\n let endDate = ''\r\n\r\n if (currentDay < parseInt(startDay)) {\r\n startDate = new Date(date.getMonth() + \"-\" + startDay + \"-\" + date.getFullYear())\r\n }\r\n else {\r\n startDate = new Date((date.getMonth() + 1) + \"-\" + startDay + \"-\" + date.getFullYear())\r\n }\r\n let end = new Date(startDate)\r\n end.setMonth(end.getMonth() + 1)\r\n endDate = new Date(end + \"-\" + startDate.getDate() + \"-\" + startDate.getFullYear())\r\n endDate.setDate(endDate.getDate() - 1)\r\n\r\n return this.formatDateForPeriod(startDate) + \" - \" + this.formatDateForPeriod(endDate)\r\n },\r\n buildPreviousPeriodRangeForYear(date) {\r\n let startDate = ''\r\n let endDate = ''\r\n\r\n startDate = new Date((date.getMonth() + 1) + \"-\" + date.getDate() + \"-\" + (date.getFullYear() - 1))\r\n\r\n let end = new Date(startDate)\r\n end.setFullYear(end.getFullYear() + 1)\r\n endDate = new Date((date.getMonth() + 1) + \"-\" + date.getDate() + \"-\" + end.getFullYear())\r\n endDate.setDate(endDate.getDate() - 1)\r\n\r\n return this.formatDateForPeriod(startDate) + \" - \" + this.formatDateForPeriod(endDate)\r\n },\r\n buildNextPeriodRangeForYear(date) {\r\n let startDate = ''\r\n let endDate = ''\r\n\r\n startDate = new Date((date.getMonth() + 1) + \"-\" + date.getDate() + \"-\" + (date.getFullYear() + 1))\r\n\r\n let end = new Date(startDate)\r\n end.setFullYear(end.getFullYear() + 1)\r\n endDate = new Date((date.getMonth() + 1) + \"-\" + date.getDate() + \"-\" + end.getFullYear())\r\n endDate.setDate(endDate.getDate() - 1)\r\n\r\n return this.formatDateForPeriod(startDate) + \" - \" + this.formatDateForPeriod(endDate)\r\n },\r\n buildPeriodRangeForYear(sDate, date) {\r\n let currentDay = new Date(this.returnFormattedDateFromCalendar(sDate))\r\n let startDate = ''\r\n let endDate = ''\r\n\r\n startDate = new Date(currentDay.getMonth() + \"-\" + currentDay.getDate() + \"-\" + date.getFullYear())\r\n\r\n let end = new Date(currentDay)\r\n end.setFullYear(end.getFullYear() + 1)\r\n endDate = new Date(currentDay.getMonth() + \"-\" + currentDay.getDate() + \"-\" + end.getFullYear())\r\n endDate.setDate(endDate.getDate() - 1)\r\n\r\n return this.formatDateForPeriod(startDate) + \" - \" + this.formatDateForPeriod(endDate)\r\n },\r\n returnCurrentStartDateForBiWeekly(start, date) {\r\n let currentDateReached = false\r\n let nextDate = new Date(start)\r\n let currentStart = new Date(start)\r\n\r\n while (!currentDateReached) {\r\n nextDate = nextDate.setDate(nextDate.getDate() + 14)\r\n\r\n if (nextDate > date) {\r\n currentDateReached = !currentDateReached\r\n\r\n return currentStart\r\n }\r\n\r\n currentStart = nextDate\r\n }\r\n },\r\n returnStartDateForPeriodWeek(startDay, sentDate) {\r\n let date = this.getMonday(sentDate)\r\n\r\n switch (startDay) {\r\n case \"Monday\":\r\n return date;\r\n break;\r\n case \"Tuesday\":\r\n return date.setDate(date.getDate() + 1);\r\n break;\r\n case \"Wednesday\":\r\n return date.setDate(date.getDate() + 2);\r\n break;\r\n case \"Thursday\":\r\n return date.setDate(date.getDate() + 3);\r\n break;\r\n case \"Friday\":\r\n return date.setDate(date.getDate() + 4);\r\n break;\r\n case \"Saturday\":\r\n return date.setDate(date.getDate() + 5);\r\n break;\r\n case \"Sunday\":\r\n return date.setDate(date.getDate() + 6);\r\n break;\r\n }\r\n },\r\n returnEndDateForPeriodWeek(startDay) {\r\n return startDay.setDate(startDay.getDate() + 6);\r\n },\r\n returnEndDateForPeriodBiWeek(startDay) {\r\n return startDay.setDate(startDay.getDate() + 13);\r\n },\r\n getMonday(d) {\r\n d = new Date(d);\r\n var day = d.getDay(),\r\n diff = d.getDate() - day + (day === 0 ? -6 : 1); // adjust when day is sunday\r\n return new Date(d.setDate(diff));\r\n },\r\n returnFormattedDateFromCalendar(date) {\r\n let dateSplit = date.split(\"-\")\r\n \r\n return (dateSplit[0] + \"-\" + (parseInt(dateSplit[1]) + 1) + \"-\" + (parseInt(dateSplit[2])))\r\n },\r\n formatDateForPeriod(date) {\r\n let ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(date);\r\n let mo = new Intl.DateTimeFormat('en', { month: 'short' }).format(date);\r\n let da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date);\r\n\r\n return da + \"-\" + mo + \"-\" + ye \r\n }\r\n\r\n}","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomePage.vue?vue&type=style&index=0&id=4e4445c2&scoped=true&lang=css&\"","import { store } from '../store/storeMain'\r\n\r\nexport const globalFunctions = {\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Return Api Path\r\n //////////////////////////////////////////////////////////\r\n\r\n returnApiPath() {\r\n let domain = document.domain\r\n let baseURL\r\n\r\n if (domain.indexOf('localhost') !== -1) {\r\n //LocalHost \r\n baseURL = 'http://localhost:57896/api/'\r\n }\r\n else if (domain.indexOf('testapi.mywalletwatcher') !== -1) {\r\n //Test Environment\r\n baseURL = 'https://testapi.mywalletwatcher.com/api/'\r\n }\r\n else if (domain.indexOf('api.mywalletwatcher') !== -1) {\r\n //Production\r\n baseURL = 'https://api.mywalletwatcher.com/api/'\r\n }\r\n else {\r\n //Production\r\n baseURL = 'https://api.mywalletwatcher.com/api/'\r\n }\r\n\r\n return baseURL\r\n },\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Check if Null, Empty or Undefined\r\n ///////////////////////////////////////////////////////////\r\n\r\n isNullOrEmpty(value) {\r\n if (value !== '' && value !== null && value !== undefined) {\r\n return false\r\n }\r\n return true\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Return Available Currencies\r\n ///////////////////////////////////////////////////////////\r\n\r\n returnAvailableCurrencies() {\r\n let cur = store.state.Currencies\r\n let currencies = []\r\n\r\n for (let i = 0; i < cur.length; i++) {\r\n if (cur[i].ObjectState !== \"Delete\") {\r\n currencies.push(cur[i])\r\n }\r\n }\r\n return currencies\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Return Available Place Sold\r\n ///////////////////////////////////////////////////////////\r\n\r\n returnAvailablePlaceSold() {\r\n let ps = store.state.PlaceSold\r\n let placeSold = []\r\n\r\n for (let i = 0; i < ps.length; i++) {\r\n if (ps[i].objectState !== \"Delete\") {\r\n placeSold.push(ps[i])\r\n }\r\n }\r\n return placeSold\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Return Categories\r\n ///////////////////////////////////////////////////////////\r\n\r\n returnCategories() {\r\n let cat = store.state.Categories\r\n let category = []\r\n\r\n for (let i = 0; i < cat.length; i++) {\r\n category.push(cat[i].categoryName)\r\n }\r\n return category\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Returns True If Int Or Float\r\n ///////////////////////////////////////////////////////////\r\n\r\n isIntOrFloat(value) {\r\n if (/^-{0,1}\\d*\\.{0,1}\\d+$/.test(value)) {\r\n return true\r\n }\r\n return false\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Returns the Current Date\r\n ///////////////////////////////////////////////////////////\r\n\r\n getCurrentDate() {\r\n let currentdate = new Date()\r\n\r\n return currentdate.getDate() + \"-\"\r\n + (currentdate.getMonth() + 1) + \"-\"\r\n + currentdate.getFullYear()\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Returns The Current Date For DatePicker\r\n ///////////////////////////////////////////////////////////\r\n\r\n getCurrentDateForPicker() {\r\n let date = new Date()\r\n\r\n let month = date.getMonth() + 1\r\n if (month < 10) {\r\n month = \"0\" + month\r\n }\r\n\r\n let day = date.getDate()\r\n if (day < 10) {\r\n day = \"0\" + day\r\n }\r\n\r\n return date.getFullYear() + \"-\" + month + \"-\" + day\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Returns The Current Time For TimePicker\r\n ///////////////////////////////////////////////////////////\r\n\r\n getCurrentTimeForPicker() {\r\n let date = new Date()\r\n\r\n return date.getHours() + \":\" + date.getMinutes()\r\n },\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Returns Amount In Account\r\n ///////////////////////////////////////////////////////////\r\n\r\n getAccountCurrentAmount(account, acc) {\r\n \r\n for (let i = 0; i < acc.length; i++) {\r\n if (acc[i].accountName === account) {\r\n return acc[i].accountAmount\r\n }\r\n }\r\n\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Returns Amount In Budget\r\n ///////////////////////////////////////////////////////////\r\n\r\n getBudgetCurrentAmount(budget, bud) {\r\n \r\n for (let i = 0; i < bud.length; i++) {\r\n if (bud[i].budgetName === budget) {\r\n return bud[i].budgetAmount\r\n }\r\n }\r\n\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Returns New Id Number\r\n ///////////////////////////////////////////////////////////\r\n\r\n getNextIdForObject(object) {\r\n let largest = 0\r\n for (let i = 0; i < object.length; i++) {\r\n if (object[i].id > largest) {\r\n largest = object[i].id\r\n }\r\n }\r\n return (largest + 1)\r\n },\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Returns items minus deleted items\r\n ///////////////////////////////////////////////////////////\r\n\r\n removeDeletedObjectsFromItems(items) {\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].objectState === 'Delete') {\r\n items.splice(i, 1)\r\n }\r\n }\r\n\r\n return this.stringify(items)\r\n },\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Returns First Letter Capitalized\r\n ///////////////////////////////////////////////////////////\r\n\r\n capitalizeFirstLetter(string) {\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n },\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Decouples object so changes will not be reflected \r\n ///////////////////////////////////////////////////////////\r\n stringify(obj) {\r\n return JSON.parse(JSON.stringify(obj))\r\n },\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Shows Filter/Search and hides the other is showing\r\n ///////////////////////////////////////////////////////////\r\n viewFilterSearchChanged(speedDial, change) {\r\n\r\n if (change === \"search\") {\r\n speedDial.viewSearch = !speedDial.viewSearch\r\n speedDial.viewFilter = false\r\n }\r\n else if (change === \"filter\") {\r\n speedDial.viewFilter = !speedDial.viewFilter\r\n speedDial.viewSearch = false\r\n }\r\n\r\n return speedDial\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////////////////\r\n //Formats money to have commas in the right places\r\n ///////////////////////////////////////////////////////////\r\n formatMoney(amount, decimalCount = 2, decimal = \".\", thousands = \",\") {\r\n try {\r\n decimalCount = Math.abs(decimalCount);\r\n decimalCount = isNaN(decimalCount) ? 2 : decimalCount;\r\n\r\n const negativeSign = amount < 0 ? \"-\" : \"\";\r\n\r\n let i = parseInt(amount = Math.abs(Number(amount) || 0).toFixed(decimalCount)).toString();\r\n let j = (i.length > 3) ? i.length % 3 : 0;\r\n\r\n return negativeSign + (j ? i.substr(0, j) + thousands : '') + i.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + thousands) + (decimalCount ? decimal + Math.abs(amount - i).toFixed(decimalCount).slice(2) : \"\");\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n}\r\n\r\n///////////////////////////////////////////////////////////\r\n//Decouples object so changes will not be reflected \r\n///////////////////////////////////////////////////////////\r\n\r\nexport const stringify = (obj) => {\r\n return JSON.parse(JSON.stringify(obj))\r\n}\r\n\r\n///////////////////////////////////////////////////////////\r\n//Return Available Place Sold\r\n///////////////////////////////////////////////////////////\r\n\r\nexport const returnAvailablePlaceSold = () => {\r\n let ps = store.state.PlaceSold\r\n let placeSold = []\r\n\r\n for (let i = 0; i < ps.length; i++) {\r\n if (ps[i].objectState !== \"Delete\") {\r\n placeSold.push(ps[i])\r\n }\r\n }\r\n return placeSold\r\n}\r\n\r\n///////////////////////////////////////////////////////////\r\n//Return List of Category Objects\r\n///////////////////////////////////////////////////////////\r\n\r\nexport const returnCategoriesObject = () => {\r\n let cat = store.state.Categories\r\n let category = []\r\n\r\n for (let i = 0; i < cat.length; i++) {\r\n category.push(cat[i])\r\n }\r\n return category\r\n}\r\n\r\n\r\n///////////////////////////////////////////////////////////\r\n//Return List of Category Names\r\n///////////////////////////////////////////////////////////\r\n\r\nexport const returnCategoryNames = () => {\r\n let cat = store.state.Categories\r\n let category = []\r\n\r\n for (let i = 0; i < cat.length; i++) {\r\n category.push(cat[i].categoryName)\r\n }\r\n return category\r\n}\r\n\r\n\r\n///////////////////////////////////////////////////////////\r\n//Check if Null, Empty or Undefined\r\n///////////////////////////////////////////////////////////\r\n\r\nexport const isNullEmptyOrUndefined = (value) => {\r\n if (value !== '' && value !== null && value !== undefined) {\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n///////////////////////////////////////////////////////////\r\n//Formats money to have commas in the right places\r\n///////////////////////////////////////////////////////////\r\n\r\nexport const formatMoney = (amount, decimalCount = 2, decimal = \".\", thousands = \",\") => {\r\n try {\r\n decimalCount = Math.abs(decimalCount);\r\n decimalCount = isNaN(decimalCount) ? 2 : decimalCount;\r\n\r\n const negativeSign = amount < 0 ? \"-\" : \"\";\r\n\r\n let i = parseInt(amount = Math.abs(Number(amount) || 0).toFixed(decimalCount)).toString();\r\n let j = (i.length > 3) ? i.length % 3 : 0;\r\n\r\n return negativeSign + (j ? i.substr(0, j) + thousands : '') + i.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + thousands) + (decimalCount ? decimal + Math.abs(amount - i).toFixed(decimalCount).slice(2) : \"\");\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n}","import axios from 'axios';\r\nimport { auth } from '../auth/index';\r\nimport { store } from '../store/storeMain'\r\nimport { globalFunctions } from '../javascript/globalFunctions'\r\n\r\nexport const HTTP = axios.create({\r\n\r\n //Enter Address for Api Here\r\n //baseURL: 'http://localhost:52794/api/',\r\n\r\n //Test Environment\r\n //baseURL: 'http://test.mywalletwatcher.com/api/',\r\n //baseURL: 'https://testapi.mywalletwatcher.com/api/',\r\n\r\n //Production\r\n //baseURL: 'https://api.mywalletwatcher.com/api/',\r\n\r\n baseURL: globalFunctions.returnApiPath(),\r\n\r\n headers: {\r\n Accept: 'application/json',\r\n Authorization: 'Bearer ' + localStorage.getItem('access_token'),\r\n \"WWW-Authenticate\": 'Bearer ' + localStorage.getItem('access_token'),\r\n 'Content-Type': 'application/json'\r\n },\r\n\r\n \r\n\r\n})\r\n\r\n//let isRefreshing = false;\r\n//let subscribers = [];\r\n\r\n//HTTP.interceptors.response.use(\r\n// function (response) {\r\n// return response;\r\n// },\r\n// function (error) {\r\n// const {\r\n// config,\r\n// response: { status, data }\r\n// } = error;\r\n\r\n// const originalRequest = config;\r\n\r\n// if (config.headers.Authorization.length < 10) {\r\n// router.push({ path: '/login' });\r\n// return Promise.reject(false);\r\n// }\r\n\r\n// if (originalRequest.url.includes(\"Login\")) {\r\n// return Promise.reject(err);\r\n// }\r\n\r\n// if (status === 401 && config.headers.Authorization.length > 10 && localStorage.getItem('login') === false) {\r\n// if (!isRefreshing) {\r\n// isRefreshing = true;\r\n// store\r\n// .dispatch(\"getRefreshToken\",\r\n// {\r\n// \"token\": localStorage.getItem('access_token'),\r\n// \"refreshToken\": localStorage.getItem('refresh_token')\r\n// }\r\n// )\r\n// .then(({ status }) => {\r\n// if (status === 200 || status === 204) {\r\n// isRefreshing = false;\r\n// }\r\n// subscribers = [];\r\n// })\r\n// .catch(error => {\r\n// console.error(error);\r\n// });\r\n// }\r\n\r\n// const requestSubscribers = new Promise(resolve => {\r\n// subscribeTokenRefresh(() => {\r\n// resolve(axios(originalRequest));\r\n// });\r\n// });\r\n\r\n// onRefreshed();\r\n\r\n// return requestSubscribers;\r\n// }\r\n\r\n// if (localStorage.getItem('login')) {\r\n// localStorage.setItem('login', false)\r\n// }\r\n\r\n// console.log(error)\r\n// }\r\n//);\r\n\r\n//function subscribeTokenRefresh(cb) {\r\n// subscribers.push(cb);\r\n//}\r\n\r\n//function onRefreshed() {\r\n// subscribers.map(cb => cb());\r\n//}\r\n\r\n//subscribers = [];","\r\nexport const auth = {\r\n\r\n // User object will let us check authentication status\r\n user: {\r\n authenticated: false\r\n },\r\n\r\n // Send a request to the login URL and save the returned JWT\r\n login(refresh_token, access_token)\r\n {\r\n localStorage.setItem('access_token', access_token)\r\n\r\n //localStorage.setItem('login', true)\r\n\r\n this.user.authenticated = true\r\n },\r\n\r\n\r\n // To log out, we just need to remove the token\r\n logout()\r\n {\r\n //localStorage.removeItem('refresh_token')\r\n localStorage.removeItem('access_token')\r\n localStorage.removeItem('store')\r\n this.user.authenticated = false\r\n },\r\n\r\n checkAuth()\r\n {\r\n var jwt = localStorage.getItem('access_token')\r\n if (jwt) {\r\n this.user.authenticated = true\r\n return true\r\n }\r\n else {\r\n this.user.authenticated = false\r\n return false\r\n }\r\n },\r\n\r\n //The object to be passed as a header for authenticated requests\r\n getAuthHeader()\r\n {\r\n var header = 'Bearer ' + localStorage.getItem('access_token')\r\n return {\r\n header\r\n }\r\n },\r\n\r\n getAccessToken() {\r\n return localStorage.getItem('access_token')\r\n } \r\n}\r\n\r\n\r\n\r\n\r\n","export const state = {\r\n version: '', //Cache App Version\r\n AccountType: '', //Account Type of Current User\r\n Accounts: [],\r\n Audit: [],\r\n Bills: [],\r\n Budgets: [],\r\n Categories: [],\r\n Currencies: [],\r\n CurrencyConversions: [],\r\n //Expenses: [],\r\n GCT: [],\r\n //Incomes: [],\r\n Items: [],\r\n Notifications: [],\r\n PlaceSold: [],\r\n Transactions: [],\r\n Settings: [],\r\n //Transfers: [],\r\n User: [],\r\n\r\n //Saves Night Mode Selection on device \r\n NightMode: {\r\n switch: true,\r\n topNav: 'dark-mode',\r\n sideNav: 'dark-mode',\r\n itemCard: 'itemCarddark'\r\n }, \r\n\r\n\r\n}\r\n","import pjson from '../../package.json';\r\n\r\nexport const mutations = {\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //LocalStorage Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n initialiseStore(state) {\r\n // Check if the store exists\r\n if (localStorage.getItem('store')) {\r\n let store = JSON.parse(localStorage.getItem('store'))\r\n\r\n //Check the version stored against current. If different, don't\r\n //load the cached version\r\n if (store.version === pjson.version) {\r\n this.replaceState(Object.assign(state, store))\r\n } else {\r\n state.version = pjson.version\r\n }\r\n }\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of LocalStorage Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //Account Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n updateStoreWithAccountsDataFromAPI: (state, accounts) => {\r\n if (accounts.length > 0) {\r\n for (var i = 0; i < accounts.length; i++) {\r\n let ifExist = true\r\n\r\n for (var x = 0; x < state.Accounts.length; x++) {\r\n if (state.Accounts[x].id === accounts[i].id) { ifExist = false }\r\n }\r\n\r\n if (ifExist) {\r\n state.Accounts.push(accounts[i])\r\n }\r\n }\r\n }\r\n },\r\n addNewAccountToStore: (state, account) => {\r\n state.Accounts.push(account)\r\n },\r\n updateAccountinStore: (state, account) => {\r\n for (let i = 0; i < state.Accounts.length; i++) {\r\n if (state.Accounts[i].id === account.id) {\r\n state.Accounts[i].accountName = account.accountName\r\n state.Accounts[i].accountType = account.accountType\r\n state.Accounts[i].accountDescription = account.accountDescription\r\n state.Accounts[i].accountAmount = account.accountAmount\r\n state.Accounts[i].accountCurrency = account.accountCurrency\r\n state.Accounts[i].objectState = \"Update\"\r\n break\r\n }\r\n }\r\n },\r\n updateStoreAfterPost: (state, account) => {\r\n for (let i = 0; i < state.Accounts.length; i++) {\r\n if (state.Accounts[i].accountName === account.accountName) {\r\n state.Accounts[i].id = account.id\r\n state.Accounts[i].accountType = account.accountType\r\n state.Accounts[i].accountDescription = account.accountDescription\r\n state.Accounts[i].accountAmount = account.accountAmount\r\n state.Accounts[i].accountCurrency = account.accountCurrency\r\n state.Accounts[i].objectState = account.objectState\r\n break\r\n }\r\n }\r\n },\r\n markAccountAsDeleted: (state, account) => {\r\n for (var i = 0; i < state.Accounts.length; i++) {\r\n if (state.Accounts[i].id === account.id) {\r\n state.Accounts[i].objectState = account.objectState\r\n break\r\n }\r\n }\r\n },\r\n deleteAccountfromStore: (state, account) => {\r\n for (var i = 0; i < state.Accounts.length; i++) {\r\n if (state.Accounts[i].id === account.id) {\r\n state.Accounts.splice(i, 1)\r\n break\r\n }\r\n }\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of Account Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //Category Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n updateStoreWithCategoryDataFromAPI: (state, data) => {\r\n\r\n let category = data\r\n\r\n if (category.length > 0) {\r\n for (var i = 0; i < category.length; i++) {\r\n let ifExist = true\r\n\r\n for (var x = 0; x < state.Categories.length; x++) {\r\n if (state.Categories[x].id === category[i].id) { ifExist = false }\r\n }\r\n\r\n if (ifExist) {\r\n state.Categories.push(category[i])\r\n }\r\n }\r\n }\r\n },\r\n addNewCategoryToStore: (state, category) => {\r\n state.Categories.push(category)\r\n },\r\n updateCategoryinStore: (state, category) => {\r\n for (let i = 0; i < state.Categories.length; i++) {\r\n if (state.Categories[i].id === category.id) {\r\n state.Categories[i].categoryName = category.categoryName\r\n state.Categories[i].iconSize = category.iconSize\r\n state.Categories[i].iconData = category.iconData\r\n state.Categories[i].parentCategory = category.parentCategory\r\n state.Categories[i].userDefined = category.userDefined\r\n state.Categories[i].userId = category.userId\r\n state.Categories[i].objectState = category.objectState\r\n break\r\n }\r\n }\r\n\r\n },\r\n markCategoryAsDeleted: (state, category) => {\r\n for (var i = 0; i < state.Categories.length; i++) {\r\n if (state.Categories[i].id === category.id) {\r\n state.Categories[i].objectState = category.objectState\r\n break\r\n }\r\n }\r\n },\r\n deleteCategoryfromStore: (state, category) => {\r\n for (var i = 0; i < state.Categories.length; i++) {\r\n if (state.Categories[i].id === category.id) {\r\n state.Categories.splice(i, 1)\r\n break\r\n }\r\n }\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of Category Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //Income Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n \r\n updateStoreWithIncomeDataFromAPI: (state, data) => {\r\n\r\n let incomes = data\r\n\r\n if (incomes.length > 0) {\r\n for (var i = 0; i < incomes.length; i++) {\r\n let ifExist = true\r\n\r\n for (var x = 0; x < state.Incomes.length; x++) {\r\n if (state.Incomes[x].id === incomes[i].id) { ifExist = false }\r\n }\r\n\r\n if (ifExist) {\r\n state.Incomes.push(incomes[i])\r\n }\r\n }\r\n }\r\n },\r\n addNewIncomeToStore: (state, income) => {\r\n state.Incomes.push(income)\r\n },\r\n updateIncomeinStore: (state, income) => {\r\n for (let i = 0; i < state.Incomes.length; i++) {\r\n if (state.Incomes[i].id === income.id) {\r\n state.Incomes[i].incomeName = income.incomeName\r\n state.Incomes[i].incomeType = income.incomeType\r\n state.Incomes[i].incomeAmount = income.incomeAmount\r\n state.Incomes[i].incomeDate = income.incomeDate\r\n state.Incomes[i].comment = income.comment\r\n state.Incomes[i].category = income.category\r\n state.Incomes[i].account = income.account\r\n state.Incomes[i].repeat = income.repeat\r\n state.Incomes[i].cycle = income.cycle\r\n state.Incomes[i].period = income.period\r\n state.Incomes[i].numberOfCycles = income.numberOfCycles\r\n state.Incomes[i].goesOffFirst = income.goesOffFirst\r\n state.Incomes[i].objectState = income.objectState\r\n break\r\n }\r\n }\r\n\r\n },\r\n markIncomeAsDeleted: (state, income) => {\r\n for (var i = 0; i < state.Incomes.length; i++) {\r\n if (state.Incomes[i].id === income.id) {\r\n state.Incomes[i].objectState = income.objectState\r\n break\r\n }\r\n }\r\n },\r\n deleteIncomefromStore: (state, income) => {\r\n for (var i = 0; i < state.Incomes.length; i++) {\r\n if (state.Incomes[i].id === income.id) {\r\n state.Incomes.splice(i, 1)\r\n break\r\n }\r\n }\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of Income Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //Expense Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n \r\n updateStoreWithExpenseDataFromAPI: (state, data) => {\r\n\r\n let expenses = data\r\n\r\n if (expenses.length > 0) {\r\n for (var i = 0; i < expenses.length; i++) {\r\n let ifExist = true\r\n\r\n for (var x = 0; x < state.Expenses.length; x++) {\r\n if (state.Expenses[x].id === expenses[i].id) { ifExist = false }\r\n }\r\n\r\n if (ifExist) {\r\n state.Expenses.push(expenses[i])\r\n }\r\n }\r\n }\r\n },\r\n addNewExpenseToStore: (state, expense) => {\r\n state.Expenses.push(expense)\r\n },\r\n updateExpenseinStore: (state, expense) => {\r\n for (let i = 0; i < state.Expenses.length; i++) {\r\n if(state.Expenses[i].id === expense.id) {\r\n state.Expenses[i].expenseName = expense.expenseName\r\n state.Expenses[i].expenseType = expense.expenseType\r\n state.Expenses[i].expenseAmount = expense.expenseAmount\r\n state.Expenses[i].expenseDate = expense.expenseDate\r\n state.Expenses[i].expenseTime = expense.expenseTime\r\n state.Expenses[i].comment = expense.comment\r\n state.Expenses[i].category = expense.category\r\n state.Expenses[i].paymentType = expense.paymentType\r\n state.Expenses[i].items = expense.items\r\n state.Expenses[i].account = expense.account\r\n state.Expenses[i].budget = expense.budget\r\n state.Expenses[i].foreignCurrencyAmount = expense.foreignCurrencyAmount\r\n state.Expenses[i].currencyConversion = expense.currencyConversion\r\n state.Expenses[i].repeat = expense.repeat\r\n state.Expenses[i].cycle = expense.cycle\r\n state.Expenses[i].period = expense.period\r\n state.Expenses[i].numberOfCycles = expense.numberOfCycles\r\n state.Expenses[i].goesOffFirst = expense.goesOffFirst\r\n state.Expenses[i].objectState = expense.objectState\r\n break\r\n }\r\n }\r\n\r\n },\r\n markExpenseAsDeleted: (state, expense) => {\r\n for (var i = 0; i < state.Expenses.length; i++) {\r\n if (state.Expenses[i].id === expense.id) {\r\n state.Expenses[i].objectState = expense.objectState\r\n break\r\n }\r\n }\r\n },\r\n deleteExpensefromStore: (state, expense) => {\r\n for (var i = 0; i < state.Expenses.length; i++) {\r\n if (state.Expenses[i].id === expense.id) {\r\n state.Expenses.splice(i, 1)\r\n break\r\n }\r\n }\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of Expense Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //Budget Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n updateStoreWithBudgetDataFromAPI: (state, data) => {\r\n\r\n let budgets = data\r\n\r\n if (budgets.length > 0) {\r\n for (var i = 0; i < budgets.length; i++) {\r\n let ifExist = true\r\n\r\n for (var x = 0; x < state.Budgets.length; x++) {\r\n if (state.Budgets[x].id === budgets[i].id) { ifExist = false }\r\n }\r\n\r\n if (ifExist) {\r\n state.Budgets.push(budgets[i])\r\n }\r\n }\r\n }\r\n },\r\n addNewBudgetToStore: (state, budget) => {\r\n state.Budgets.push(budget)\r\n },\r\n updateBudgetinStore: (state, budget) => {\r\n for (let i = 0; i < state.Budgets.length; i++) {\r\n if (state.Budgets[i].id === budget.id) {\r\n state.Budgets[i].budgetName = budget.budgetName\r\n state.Budgets[i].budgetType = budget.budgetType\r\n state.Budgets[i].budgetAmount = budget.budgetAmount\r\n state.Budgets[i].comment = budget.comment\r\n state.Budgets[i].category = budget.category\r\n state.Budgets[i].account = budget.account\r\n state.Budgets[i].amountSpent = budget.amountSpent\r\n state.Budgets[i].refillAmount = budget.refillAmount\r\n state.Budgets[i].budgetOverspent = budget.budgetOverspent\r\n state.Budgets[i].OverspendingRisk = budget.OverspendingRisk\r\n state.Budgets[i].objectState = budget.objectState\r\n break\r\n }\r\n }\r\n },\r\n markBudgetAsDeleted: (state, budget) => {\r\n for (var i = 0; i < state.Budgets.length; i++) {\r\n if (state.Budgets[i].id === budget.id) {\r\n state.Budgets[i].objectState = budget.objectState\r\n break\r\n }\r\n }\r\n },\r\n deleteBudgetfromStore: (state, budget) => {\r\n for (var i = 0; i < state.Budgets.length; i++) {\r\n if (state.Budgets[i].id === budget.id) {\r\n state.Budgets.splice(i, 1)\r\n break\r\n }\r\n }\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of Budget Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //Transaction Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n updateStoreWithTransactionDataFromAPI: (state, data) => {\r\n\r\n let transactions = data\r\n\r\n if (transactions.length > 0) {\r\n for (var i = 0; i < transactions.length; i++) {\r\n let ifExist = true\r\n\r\n for (var x = 0; x < state.Transactions.length; x++) {\r\n if (state.Transactions[x].id === transactions[i].id) { ifExist = false }\r\n }\r\n\r\n if (ifExist) {\r\n state.Transactions.push(transactions[i])\r\n }\r\n }\r\n }\r\n },\r\n addNewTransactionToStore: (state, transaction) => {\r\n state.Transactions.push(transaction)\r\n },\r\n updateTransactioninStore: (state, transaction) => {\r\n for (let i = 0; i < state.Transactions.length; i++) {\r\n if (state.Transactions[i].id === transaction.id) {\r\n state.Transactions[i].budget = transaction.budget\r\n state.Transactions[i].cycle = transaction.cycle\r\n state.Transactions[i].goesOffFirst = transaction.goesOffFirst\r\n state.Transactions[i].transactionBalances[0].transactionItems = transaction.transactionBalances[0].transactionItems\r\n state.Transactions[i].numberOfCycles = transaction.numberOfCycles\r\n state.Transactions[i].transactionBalances[0].paymentType = transaction.transactionBalances[0].paymentType\r\n state.Transactions[i].period = transaction.period\r\n state.Transactions[i].recurringTransaction = transaction.recurringTransaction\r\n state.Transactions[i].repeat = transaction.repeat\r\n state.Transactions[i].show = transaction.show\r\n state.Transactions[i].transactionType = transaction.transactionType\r\n state.Transactions[i].transactionBalances[0].transactionAmount = transaction.transactionBalances[0].transactionAmount\r\n state.Transactions[i].comment = transaction.comment\r\n state.Transactions[i].category = transaction.category\r\n state.Transactions[i].account = transaction.account\r\n state.Transactions[i].currency = transaction.currency\r\n state.Transactions[i].transactionBalances[0].transactionDate = transaction.transactionBalances[0].transactionDate\r\n state.Transactions[i].transactionBalances[0].transactionTime = transaction.transactionBalances[0].transactionTime\r\n state.Transactions[i].transactionBalances[0].changed = transaction.transactionBalances[0].changed\r\n state.Transactions[i].transactionName = transaction.transactionName\r\n state.Transactions[i].transferFrom = transaction.transferFrom\r\n state.Transactions[i].transferTo = transaction.transferTo\r\n state.Transactions[i].objectState = transaction.objectState\r\n break\r\n }\r\n }\r\n },\r\n markTransactionAsDeleted: (state, transaction) => {\r\n for (var i = 0; i < state.Transactions.length; i++) {\r\n if (state.Transactions[i].id === transaction.id) {\r\n state.Transactions[i].objectState = transaction.objectState\r\n break\r\n }\r\n }\r\n },\r\n deleteTransactionfromStore: (state, transaction) => {\r\n for (var i = 0; i < state.Transactions.length; i++) {\r\n if (state.Transactions[i].id === transaction.id) {\r\n state.Transactions.splice(i, 1)\r\n break\r\n }\r\n }\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of Transaction Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //Item Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n updateStoreWithItemDataFromAPI: (state, data) => {\r\n\r\n let items = data\r\n\r\n if (items.length > 0) {\r\n for (var i = 0; i < items.length; i++) {\r\n let ifExist = true\r\n\r\n for (var x = 0; x < state.Items.length; x++) {\r\n if (state.Items[x].id === items[i].id) { ifExist = false }\r\n }\r\n\r\n if (ifExist) {\r\n state.Items.push(items[i])\r\n }\r\n }\r\n }\r\n },\r\n addNewItemToStore: (state, item) => {\r\n state.Items.push(item)\r\n },\r\n updateIteminStore: (state, item) => {\r\n for (let i = 0; i < state.Items.length; i++) {\r\n if (state.Items[i].id === item.id) {\r\n state.Items[i].itemName = item.itemName\r\n state.Items[i].itemPrice = item.itemPrice\r\n state.Items[i].itemCurrency = item.itemCurrency\r\n state.Items[i].isTaxed = item.isTaxed\r\n state.Items[i].taxAmount = item.taxAmount\r\n state.Items[i].dateChanged = item.dateChanged\r\n state.Items[i].objectState = item.objectState\r\n break\r\n }\r\n }\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of Item Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //Currency Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n updateStoreWithCurrencyDataFromAPI: (state, data) => {\r\n\r\n let currencies = data\r\n\r\n if (currencies.length > 0) {\r\n for (var i = 0; i < currencies.length; i++) {\r\n let ifExist = true\r\n\r\n for (var x = 0; x < state.Currencies.length; x++) {\r\n if (state.Currencies[x].id === currencies[i].id) { ifExist = false }\r\n }\r\n\r\n if (ifExist) {\r\n state.Currencies.push(currencies[i])\r\n }\r\n }\r\n }\r\n },\r\n addNewCurrencyToStore: (state, currency) => {\r\n state.Currencies.push(currency)\r\n },\r\n deleteCurrencyfromStore: (state, currency) => {\r\n for (var i = 0; i < state.Currencies.length; i++) {\r\n if (state.Currencies[i].id === currency.id) {\r\n state.Currencies.splice(i, 1)\r\n break\r\n }\r\n }\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of Currency Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //PlaceSold Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n updateStoreWithPlaceSoldDataFromAPI: (state, placeSold) => {\r\n if (placeSold.length > 0) {\r\n for (let i = 0; i < placeSold.length; i++) {\r\n let ifExist = true\r\n\r\n for (let x = 0; x < state.PlaceSold.length; x++) {\r\n if (state.PlaceSold[x].id === placeSold[i].id) { ifExist = false }\r\n }\r\n\r\n if (ifExist) {\r\n state.PlaceSold.push(placeSold[i])\r\n }\r\n }\r\n }\r\n },\r\n addNewPlaceSoldToStore: (state, placeSold) => {\r\n state.PlaceSold.push(placeSold)\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of PlaceSold Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //PlaceSold Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n updateStoreWithAuditDataFromAPI: (state, audit) => {\r\n if (placeSold.length > 0) {\r\n for (let i = 0; i < placeSold.length; i++) {\r\n let ifExist = true\r\n\r\n for (let x = 0; x < state.PlaceSold.length; x++) {\r\n if (state.PlaceSold[x].id === placeSold[i].id) { ifExist = false }\r\n }\r\n\r\n if (ifExist) {\r\n state.PlaceSold.push(placeSold[i])\r\n }\r\n }\r\n }\r\n },\r\n addNewAuditToStore: (state, audit) => {\r\n state.Audit.push(audit)\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of PlaceSold Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //Currency Conversion Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n addNewCurrencyConversionToStore: (state, conversion) => {\r\n state.CurrencyConversions.push(conversion)\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of Currency Conversion Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //Transfer Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n addNewTransferToStore: (state, transfer) => {\r\n state.Transfers.push(transfer)\r\n },\r\n updateTransferinStore: (state, transfer) => {\r\n for (let i = 0; i < state.Transfers.length; i++) {\r\n if (state.Transfers.id === transfer.id) {\r\n state.Transfers[i].currency = transfer.currency\r\n state.Transfers[i].transferName = transfer.transferName\r\n state.Transfers[i].category = transfer.category\r\n state.Transfers[i].transferAmount = transfer.transferAmount\r\n state.Transfers[i].comment = transfer.comment\r\n state.Transfers[i].paymentType = transfer.paymentType\r\n state.Transfers[i].transferFrom = transfer.transferFrom\r\n state.Transfers[i].transferTo = transfer.transferTo\r\n state.Transfers[i].transferDate = transfer.transferDate\r\n state.Transfers[i].transferTime = transfer.transferTime\r\n state.Transfers[i].objectState = transfer.objectState\r\n break\r\n }\r\n }\r\n },\r\n markTransferAsDeleted: (state, transfer) => {\r\n for (var i = 0; i < state.Transfers.length; i++) {\r\n if (state.Transfers[i].id === transfer.id) {\r\n state.Transfers[i].objectState = transfer.objectState\r\n break\r\n }\r\n }\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of Item Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n \r\n //////////////////////////////////////////////////////////////////////////\r\n //GCT Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n addNewGCTToStore: (state, gct) => {\r\n state.GCT.push(gct)\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of GCT Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //User Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n updateStoreWithUserDataFromAPI: (state, user) => {\r\n state.User = user\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End of User Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //Settings Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n updateSelectPeriodInStore: (state, period) => {\r\n state.Settings = {\r\n period: '',\r\n periodStartDayOfWeek: '',\r\n periodStartDay: '',\r\n periodStartDate: ''\r\n }\r\n\r\n state.Settings.period = period.period\r\n state.Settings.periodStartDayOfWeek = period.periodStartDayOfWeek\r\n state.Settings.periodStartDate = period.periodStartDate\r\n state.Settings.periodStartDay = period.periodStartDay\r\n },\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End of Settings Mutations\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //Update Night Mode Selection\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n UpdateNightModeSelection: (state, selection) => {\r\n state.NightMode.switch = selection\r\n }\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n //End Of Update Night Mode Selection\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n}\r\n","export const getters = {\r\n\r\n}\r\n","import { HTTP } from './httpCommon';\r\n\r\nexport const httpGet = {\r\n\r\n ////////////////////////////////////////////\r\n ///ACCOUNTS\r\n ////////////////////////////////////////////\r\n\r\n //Get Accounts\r\n getAccounts(callback) {\r\n HTTP.get('Accounts')\r\n .then(response => {\r\n // JSON responses are automatically parsed.\r\n callback(response.data)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n })\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///TRANSACTIONS\r\n ////////////////////////////////////////////\r\n\r\n //Get Transaction\r\n getTransactions(callback) {\r\n HTTP.get('Transactions')\r\n .then(response => {\r\n // JSON responses are automatically parsed.\r\n callback(response.data)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n })\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///ITEMS\r\n ////////////////////////////////////////////\r\n\r\n //Get Items\r\n getItems(query, callback) {\r\n HTTP.get('Items', query)\r\n .then(response => {\r\n // JSON responses are automatically parsed.\r\n callback(response.data)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n })\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///PLACESOLD\r\n ////////////////////////////////////////////\r\n\r\n //Get PlaceSold\r\n getPlaceSold(callback) {\r\n HTTP.get('PlaceSold')\r\n .then(response => {\r\n // JSON responses are automatically parsed.\r\n callback(response.data)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n })\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///BUDGETS\r\n ////////////////////////////////////////////\r\n\r\n //Get Budgets\r\n getBudgets(callback) {\r\n HTTP.get('Budgets')\r\n .then(response => {\r\n // JSON responses are automatically parsed.\r\n callback(response.data)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n })\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///CATEGORIES\r\n ////////////////////////////////////////////\r\n\r\n //Get Categories\r\n getCategories(callback) {\r\n HTTP.get('Categories')\r\n .then(response => {\r\n // JSON responses are automatically parsed.\r\n callback(response.data)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n })\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///CURRENCIES\r\n ////////////////////////////////////////////\r\n\r\n //Get Currencies\r\n getCurrencies(callback) {\r\n HTTP.get('Currencies')\r\n .then(response => {\r\n // JSON responses are automatically parsed.\r\n callback(response.data)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n })\r\n },\r\n\r\n ////////////////////////////////////////////\r\n ///AUDIT\r\n ////////////////////////////////////////////\r\n\r\n //Get Audit\r\n getAudit(callback) {\r\n HTTP.get('Audit')\r\n .then(response => {\r\n // JSON responses are automatically parsed.\r\n callback(response.data)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n })\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////\r\n ///USER PROFILE\r\n ///////////////////////////////////////////////\r\n\r\n //Get User Profile\r\n getUser(callback) {\r\n HTTP.get('Profile'\r\n )\r\n .then(response => {\r\n // JSON responses are automatically parsed.\r\n callback(response.data)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n })\r\n },\r\n\r\n ///////////////////////////////////////////////\r\n ///PERIOD\r\n ///////////////////////////////////////////////\r\n\r\n //Get Period\r\n getPeriod(callback) {\r\n HTTP.get('Period'\r\n )\r\n .then(response => {\r\n // JSON responses are automatically parsed.\r\n callback(response.data)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n })\r\n },\r\n\r\n\r\n \r\n\r\n}\r\n","import { HTTP } from './httpCommon';\r\n\r\nexport const httpPost = {\r\n\r\n ////////////////////////////////////////////\r\n ///ACCOUNTS\r\n ////////////////////////////////////////////\r\n\r\n //Post Account\r\n postNewAccount(account, callback) {\r\n HTTP.post('Accounts',\r\n account\r\n )\r\n .then(response => {\r\n callback(response)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n \r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///TRANSACTION\r\n ////////////////////////////////////////////\r\n\r\n //Post Transaction\r\n postNewTransaction(transaction, callback) {\r\n HTTP.post('Transactions',\r\n transaction\r\n )\r\n .then(response => {\r\n callback(response)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///ITEM\r\n ////////////////////////////////////////////\r\n\r\n //Post Item\r\n postNewItem(item, callback) {\r\n HTTP.post('Items',\r\n item\r\n )\r\n .then(response => {\r\n callback(response.data)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///PLACESOLD\r\n ////////////////////////////////////////////\r\n\r\n //Post Item\r\n postNewPlaceSold(placeSold, callback) {\r\n HTTP.post('PlaceSold',\r\n placeSold\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///BUDGET\r\n ////////////////////////////////////////////\r\n\r\n //Post Budget\r\n postNewBudget(budget, callback) {\r\n HTTP.post('Budgets',\r\n budget\r\n )\r\n .then(response => { \r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///Currency\r\n ////////////////////////////////////////////\r\n\r\n //Post Currency\r\n postNewCurrency(currency, callback) {\r\n HTTP.post('Currencies',\r\n currency\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n },\r\n\r\n ////////////////////////////////////////////\r\n ///CATEGORIES\r\n ////////////////////////////////////////////\r\n\r\n //Post Category\r\n postNewCategory(category, callback) {\r\n HTTP.post('Categories',\r\n category\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n })\r\n },\r\n\r\n ////////////////////////////////////////////\r\n ///AUDIT\r\n ////////////////////////////////////////////\r\n\r\n //Post Audit\r\n postNewAudit(audit, callback) {\r\n HTTP.post('Audit',\r\n audit\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n })\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////\r\n ///Refresh Token\r\n ///////////////////////////////////////////////\r\n\r\n //Get Refresh Token\r\n getNewToken(tokens, callback) {\r\n HTTP.post('AuthManagement/RefreshToken',\r\n tokens\r\n )\r\n .then(response => {\r\n callback(response)\r\n })\r\n .catch(e => {\r\n callback(e)\r\n })\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n","import { HTTP } from './httpCommon';\r\n\r\nexport const httpPut = {\r\n\r\n ////////////////////////////////////////////\r\n ///ACCOUNTS\r\n ////////////////////////////////////////////\r\n\r\n //Update Account\r\n updateAccount(account, callback) {\r\n HTTP.put('Accounts/' +\r\n account.id, account\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n\r\n },\r\n\r\n ////////////////////////////////////////////\r\n ///TRANSACTIONS\r\n ////////////////////////////////////////////\r\n\r\n //Update Transaction\r\n updateTransaction(transaction, callback) {\r\n HTTP.put('Transactions/' +\r\n transaction.id, transaction\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///ITEMS\r\n ////////////////////////////////////////////\r\n\r\n //Update Items\r\n updateItem(item, callback) {\r\n HTTP.put('Items/' +\r\n item.id, item\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n this.errors.push(e)\r\n console.log(e);\r\n })\r\n\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///PLACESOLD\r\n ////////////////////////////////////////////\r\n\r\n //Update PlaceSold\r\n updatePlaceSold(placeSold, callback) {\r\n HTTP.put('PlaceSold/' +\r\n placeSold.id, placeSold\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n this.errors.push(e)\r\n console.log(e);\r\n })\r\n\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///BUDGETS\r\n ////////////////////////////////////////////\r\n\r\n //Update Budgets\r\n updateBudget(budget, callback) {\r\n HTTP.put('Budgets/' +\r\n budget.id, budget\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n\r\n },\r\n\r\n \r\n ////////////////////////////////////////////\r\n ///CURRENCIES\r\n ////////////////////////////////////////////\r\n\r\n //Update Currency\r\n updateCurrency(currency, callback) {\r\n HTTP.put('Currencies/' +\r\n currency.id, currency\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///USER\r\n ////////////////////////////////////////////\r\n\r\n //Update User\r\n updateUser(user, callback) {\r\n HTTP.put('Profile/' +\r\n user.id, user\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n\r\n },\r\n\r\n}\r\n","import { HTTP } from './httpCommon';\r\n\r\nexport const httpDelete = {\r\n\r\n ////////////////////////////////////////////\r\n ///ACCOUNTS\r\n ////////////////////////////////////////////\r\n\r\n //Delete Account\r\n deleteAccount(account, callback) {\r\n HTTP.delete('Accounts/'+\r\n account.id \r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///TRANSACTIONS\r\n ////////////////////////////////////////////\r\n\r\n //Delete Transaction\r\n deleteIncome(transaction, callback) {\r\n HTTP.delete('Transactions/' +\r\n transaction.id\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///ITEMS\r\n ////////////////////////////////////////////\r\n\r\n //Delete Item\r\n deleteItem(item, callback) {\r\n HTTP.delete('Items/' +\r\n item.id\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///BUDGETS\r\n ////////////////////////////////////////////\r\n\r\n //Delete Budget\r\n deleteBudget(budget, callback) {\r\n HTTP.delete('Budgets/' +\r\n budget.id\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n\r\n },\r\n\r\n\r\n ////////////////////////////////////////////\r\n ///Curriences\r\n ////////////////////////////////////////////\r\n\r\n //Delete Currency\r\n deleteCurrency(currency, callback) {\r\n HTTP.delete('Curriencies/' +\r\n currency.id\r\n )\r\n .then(response => {\r\n callback(response.status)\r\n })\r\n .catch(e => {\r\n //this.errors.push(e)\r\n console.log(e);\r\n })\r\n\r\n },\r\n\r\n\r\n}\r\n","import { globalFunctions } from './globalFunctions'\r\n\r\nexport const itemManager = {\r\n itemObject: {\r\n id: 0,\r\n itemName: '',\r\n currency: '',\r\n category: '',\r\n isTaxed: false,\r\n gct: 0,\r\n placeSold: '',\r\n placeSoldLocation: '',\r\n priceList: [],\r\n dateChanged: '',\r\n objectState: 'New'\r\n },\r\n //////////////////////////////////////////////////\r\n //Convert To Item Format\r\n /////////////////////////////////////////////////\r\n\r\n formatAsItem(item) {\r\n this.itemObject.id = item.id\r\n this.itemObject.itemName = item.itemName\r\n this.itemObject.category = item.category\r\n this.itemObject.currency = item.currency\r\n this.itemObject.isTaxed = item.isTaxed\r\n\r\n if (item.gct > 0) {\r\n this.itemObject.gct = parseFloat(item.gct)\r\n }\r\n\r\n this.itemObject.placeSold = item.placeSold\r\n this.itemObject.placeSoldLocation = item.placeSoldLocation\r\n this.itemObject.priceList = item.priceList\r\n this.itemObject.dateChanged = item.dateChanged\r\n this.itemObject.objectState = item.objectState\r\n\r\n return this.itemObject\r\n },\r\n\r\n /////////////////////////////////////////////////\r\n //Convert All to Item Format\r\n ////////////////////////////////////////////////\r\n\r\n formatAllAsItem(items) {\r\n let newItems = []\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n newItems.push(globalFunctions.stringify(this.formatAsItem(items[i])))\r\n }\r\n\r\n return newItems\r\n }\r\n\r\n\r\n}","//API imports\r\nimport { httpGet } from '../api/httpGet';\r\nimport { httpPost } from '../api/httpPost';\r\nimport { httpPut } from '../api/httpPut';\r\nimport { httpDelete } from '../api/httpDelete';\r\n\r\nimport { auth } from '../auth/index';\r\nimport { itemManager } from '../javascript/itemManager'\r\nimport { formatAllAsBudget } from '../javascript/budgetManager'\r\nimport { globalFunctions } from '../javascript/globalFunctions';\r\n\r\nexport const actions = {\r\n\r\n /////////////////////////////////////////////////////////\r\n //Actions For Updating API \r\n /////////////////////////////////////////////////////////\r\n\r\n syncStoreWithDatabaseAfterComingOnline: context => {\r\n //Write Code to Sync Offline changes With API Here\r\n },\r\n makeChangesToAPI: (context, mutationType) => {\r\n\r\n if (mutationType === 'initialiseStore') {\r\n context.dispatch('getDataFromAPIIfNeeded');\r\n }\r\n else if (mutationType.substring(0, 3) === 'add') {\r\n context.dispatch('addDataForAPIIfNeeded', mutationType)\r\n }\r\n else if (mutationType.substring(0, 6) === 'update') {\r\n context.dispatch('updateDataForAPIIfNeeded', mutationType)\r\n }\r\n else if (mutationType.substring(0, 4) === 'mark') {\r\n context.dispatch('deleteDataFromAPIIfNeeded', mutationType)\r\n }\r\n\r\n },\r\n\r\n ///GET DATA\r\n\r\n getDataFromAPIIfNeeded: context => {\r\n //Gets Data from Account If Needed\r\n context.dispatch('getDataFromAccountIfNeeded')\r\n\r\n //Get Data from Currency Id Needed\r\n context.dispatch('getDataFromCurrencyIfNeeded')\r\n\r\n //Gets Data from Transaction If Needed\r\n context.dispatch('getDataFromTransactionIfNeeded')\r\n\r\n //Gets Data from Perios If Needed\r\n context.dispatch('getDataFromPeriodIfNeeded')\r\n\r\n //Get Data from Item If Needed\r\n //context.dispatch('getDataFromItemIfNeeded')\r\n\r\n //Get Data from Budget If Needed\r\n context.dispatch('getDataFromBudgetIfNeeded')\r\n\r\n //Get Data from Category If Needed\r\n context.dispatch('getDataFromCategoryIfNeeded')\r\n\r\n //Get Data from Place Sold If Needed\r\n context.dispatch('getDataFromPlaceSoldIfNeeded')\r\n\r\n //Get Data from User If Needed\r\n context.dispatch('getDataFromUserIfNeeded')\r\n },\r\n\r\n getDataFromPeriodIfNeeded: context => {\r\n if (context.state.Settings.length === 0) {\r\n context.dispatch('getPeriodDataFromAPI')\r\n }\r\n },\r\n getDataFromAccountIfNeeded: context => {\r\n if (context.state.Accounts.length === 0) {\r\n context.dispatch('getAccountDataFromAPI')\r\n }\r\n },\r\n getDataFromCurrencyIfNeeded: context => {\r\n if (context.state.Currencies.length === 0) {\r\n context.dispatch('getCurrencyDataFromAPI')\r\n }\r\n },\r\n getDataFromTransactionIfNeeded: context => {\r\n if (context.state.Transactions.length === 0) {\r\n context.dispatch('getTransactionDataFromAPI')\r\n }\r\n },\r\n //getDataFromItemIfNeeded: context => {\r\n // if (context.state.Items.length === 0) {\r\n // context.dispatch('getItemDataFromAPI')\r\n // }\r\n //},\r\n getDataFromBudgetIfNeeded: context => {\r\n if (context.state.Budgets.length === 0) {\r\n context.dispatch('getBudgetDataFromAPI')\r\n }\r\n },\r\n getDataFromCategoryIfNeeded: context => {\r\n if (context.state.Categories.length === 0) {\r\n context.dispatch('getCategoryDataFromAPI')\r\n }\r\n },\r\n getDataFromPlaceSoldIfNeeded: context => {\r\n if (context.state.PlaceSold.length === 0) {\r\n context.dispatch('getPlaceSoldDataFromAPI')\r\n }\r\n },\r\n getDataFromUserIfNeeded: context => {\r\n\r\n //////////////////////////////////////\r\n //Gets User ID from LocalStorage\r\n //////////////////////////////////////\r\n\r\n let userId = localStorage.getItem('id_token') \r\n\r\n if (context.state.User.length === 0) {\r\n context.dispatch('getUserDataFromAPI', userId)\r\n }\r\n },\r\n\r\n ///END OF GET DATA\r\n\r\n ///ADD DATA\r\n\r\n addDataForAPIIfNeeded: (context, mutationType) => {\r\n \r\n if (mutationType.indexOf(\"Account\") !== -1) {\r\n //Gets Data from Account If Needed\r\n context.dispatch('addDataForAccountIfNeeded')\r\n }\r\n else if (mutationType.indexOf(\"PlaceSold\") !== -1) {\r\n //Gets Data from PlaeSold If Needed\r\n context.dispatch('addDataForPlaceSoldIfNeeded')\r\n }\r\n else if (mutationType.indexOf(\"Transaction\") !== -1) {\r\n //Gets Data from Transaction If Needed\r\n context.dispatch('addDataForTransactionIfNeeded')\r\n }\r\n else if (mutationType.indexOf(\"Item\") !== -1) {\r\n //Gets Data from Item If Needed\r\n context.dispatch('addDataForItemIfNeeded')\r\n }\r\n else if (mutationType.indexOf(\"Budget\") !== -1) {\r\n //Gets Data from Item If Needed\r\n context.dispatch('addDataForBudgetIfNeeded')\r\n }\r\n else if (mutationType.indexOf(\"Currency\") !== -1) {\r\n //Gets Data from Item If Needed\r\n context.dispatch('addDataForCurrencyIfNeeded')\r\n }\r\n else if (mutationType.indexOf(\"Category\") !== -1) {\r\n //Gets Data from Category If Needed\r\n context.dispatch('addDataForCategoryIfNeeded')\r\n }\r\n },\r\n\r\n addDataForAccountIfNeeded: context => {\r\n let newAccounts = []\r\n\r\n for (let i = 0; i < context.state.Accounts.length; i++) {\r\n if (context.state.Accounts[i].objectState === \"New\") {\r\n newAccounts.push(context.state.Accounts[i])\r\n }\r\n }\r\n\r\n context.dispatch('addNewAccountToDatabase', newAccounts)\r\n\r\n },\r\n addDataForTransactionIfNeeded: context => {\r\n let newTransactions = []\r\n\r\n for (let i = 0; i < context.state.Transactions.length; i++) {\r\n if (context.state.Transactions[i].objectState === \"New\") {\r\n newTransactions.push(context.state.Transactions[i])\r\n }\r\n }\r\n\r\n context.dispatch('addNewTransactionToDatabase', newTransactions)\r\n\r\n },\r\n addDataForItemIfNeeded: context => {\r\n let newItems = []\r\n\r\n for (let i = 0; i < context.state.Items.length; i++) {\r\n if (context.state.Items[i].objectState === \"New\") {\r\n newItems.push(context.state.Items[i])\r\n }\r\n }\r\n\r\n context.dispatch('addNewItemToDatabase', newItems)\r\n\r\n },\r\n addDataForBudgetIfNeeded: context => {\r\n let newBudgets = []\r\n\r\n for (let i = 0; i < context.state.Budgets.length; i++) {\r\n if (context.state.Budgets[i].objectState === \"New\") {\r\n newBudgets.push(context.state.Budgets[i])\r\n }\r\n }\r\n\r\n context.dispatch('addNewBudgetToDatabase', newBudgets)\r\n\r\n },\r\n addDataForCurrencyIfNeeded: context => {\r\n let newCurrencies = []\r\n\r\n for (let i = 0; i < context.state.Currencies.length; i++) {\r\n if (context.state.Currencies[i].objectState === \"New\") {\r\n newCurrencies.push(context.state.Currencies[i])\r\n }\r\n }\r\n\r\n context.dispatch('addNewCurrencyToDatabase', newCurrencies)\r\n\r\n },\r\n addDataForCategoryIfNeeded: context => {\r\n let newCategories = []\r\n\r\n for (let i = 0; i < context.state.Categories.length; i++) {\r\n if (context.state.Categories[i].objectState === \"New\") {\r\n newCategories.push(context.state.Categories[i])\r\n }\r\n }\r\n\r\n context.dispatch('addNewCategoryToDatabase', newCategories)\r\n },\r\n addDataForPlaceSoldIfNeeded: context => {\r\n let newplaces = []\r\n\r\n for (let i = 0; i < context.state.PlaceSold.length; i++) {\r\n if (context.state.PlaceSold[i].objectState === \"New\") {\r\n newplaces.push(context.state.PlaceSold[i])\r\n }\r\n }\r\n\r\n context.dispatch('addNewPlaceSoldToDatabase', newplaces)\r\n },\r\n\r\n ///END OF ADD DATA\r\n\r\n //UPDATE DATA\r\n\r\n updateDataForAPIIfNeeded: (context, mutationType) => {\r\n\r\n //if (mutationType.indexOf(\"Account\") !== -1) {\r\n // //Gets Data from Account If Needed\r\n // context.dispatch('updateDataForAccountIfNeeded')\r\n //}\r\n if (mutationType.indexOf(\"Transaction\") !== -1) {\r\n //Gets Data from Income If Needed\r\n context.dispatch('updateDataForTransactionIfNeeded')\r\n }\r\n else if (mutationType.indexOf(\"Item\") !== -1) {\r\n //Gets Data from Item If Needed\r\n context.dispatch('updateDataForItemIfNeeded')\r\n }\r\n else if (mutationType.indexOf(\"Budget\") !== -1) {\r\n //Gets Data from Item If Needed\r\n context.dispatch('updateDataForBudgetIfNeeded')\r\n }\r\n\r\n },\r\n\r\n updateDataForAccountIfNeeded: context => {\r\n let updateAccounts = []\r\n\r\n for (let i = 0; i < context.state.Accounts.length; i++) {\r\n if (context.state.Accounts[i].objectState === \"Update\") {\r\n updateAccounts.push(context.state.Accounts[i])\r\n }\r\n }\r\n\r\n context.dispatch('updateAccountinDatabase', updateAccounts)\r\n\r\n },\r\n updateDataForTransactionIfNeeded: context => {\r\n let updateTransactions = []\r\n\r\n for (let i = 0; i < context.state.Transactions.length; i++) {\r\n if (context.state.Transactions[i].objectState === \"Update\") {\r\n updateTransactions.push(context.state.Transactions[i])\r\n }\r\n }\r\n\r\n context.dispatch('updateTransactionInDatabase', updateTransactions)\r\n\r\n },\r\n updateDataForItemIfNeeded: context => {\r\n let updateItems = []\r\n\r\n for (let i = 0; i < context.state.Items.length; i++) {\r\n if (context.state.Items[i].objectState === \"Update\") {\r\n updateItems.push(context.state.Items[i])\r\n }\r\n }\r\n\r\n context.dispatch('updateItemInDatabase', updateItems)\r\n\r\n },\r\n updateDataForBudgetIfNeeded: context => {\r\n let updateBudgets = []\r\n\r\n for (let i = 0; i < context.state.Budgets.length; i++) {\r\n if (context.state.Budgets[i].objectState === \"Update\") {\r\n updateBudgets.push(context.state.Budgets[i])\r\n }\r\n }\r\n\r\n context.dispatch('updateBudgetInDatabase', updateBudgets)\r\n\r\n },\r\n\r\n //END OF UPDATE DATA\r\n\r\n //DELETE DATA\r\n\r\n deleteDataFromAPIIfNeeded: (context, mutationType) => {\r\n if (mutationType.indexOf(\"Account\") !== -1) {\r\n //Gets Data from Account If Needed\r\n context.dispatch('deleteDataForAccountIfNeeded')\r\n }\r\n else if (mutationType.indexOf(\"Transaction\") !== -1) {\r\n //Gets Data from Income If Needed\r\n context.dispatch('deleteDataForTransactionIfNeeded')\r\n }\r\n else if (mutationType.indexOf(\"Item\") !== -1) {\r\n //Gets Data from Item If Needed\r\n context.dispatch('deleteDataForItemIfNeeded')\r\n }\r\n\r\n },\r\n\r\n deleteDataForAccountIfNeeded: context => {\r\n let deleteAccounts = []\r\n\r\n for (let i = 0; i < context.state.Accounts.length; i++) {\r\n if (context.state.Accounts[i].objectState === \"Delete\") {\r\n deleteAccounts.push(context.state.Accounts[i])\r\n }\r\n }\r\n\r\n context.dispatch('deleteAccountinDatabase', deleteAccounts)\r\n\r\n },\r\n deleteDataForTransactionIfNeeded: context => {\r\n let deleteTransactions = []\r\n\r\n for (let i = 0; i < context.state.Transactions.length; i++) {\r\n if (context.state.Transactions[i].objectState === \"Delete\") {\r\n deleteTransactions.push(context.state.IncTransactionsomes[i])\r\n }\r\n }\r\n\r\n context.dispatch('deleteTransactionInDatabase', deleteTransactions)\r\n\r\n },\r\n deleteDataForItemIfNeeded: context => {\r\n let deleteItems = []\r\n\r\n for (let i = 0; i < context.state.Items.length; i++) {\r\n if (context.state.Items[i].objectState === \"Delete\") {\r\n deleteItems.push(context.state.Items[i])\r\n }\r\n }\r\n\r\n context.dispatch('deleteIteminDatabase', deleteItems)\r\n\r\n },\r\n\r\n //END OF DELETE DATA\r\n\r\n /////////////////// //////////////////////////////////////\r\n //End Of Actions For Updating API \r\n /////////////////////////////////////////////////////////\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //Category Actions \r\n /////////////////////////////////////////////////////////\r\n\r\n getCategoryDataFromAPI: context => {\r\n let p1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpGet.getCategories(function (data) {\r\n context.commit('updateStoreWithCategoryDataFromAPI', data)\r\n })\r\n });\r\n },\r\n addNewCategoryToDatabase: (context, categoryData) => {\r\n for (let i = 0; i < categoryData.length; i++) {\r\n let a1 = new Promise(\r\n // The resolver function is called with the ability to resolve or reject the promise\r\n (resolve, reject) => {\r\n httpPost.postNewCategory(categoryData[i], function (data) {\r\n for (let j = 0; j < context.state.Categories.length; j++) {\r\n if (context.state.Categories[j].categoryName === categoryData[i].categoryName) {\r\n context.state.Categories[j].id = data\r\n context.state.Categories[j].objectState = \"Current\"\r\n }\r\n }\r\n })\r\n });\r\n }\r\n\r\n },\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //End Of Category Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //Place Sold Actions \r\n /////////////////////////////////////////////////////////\r\n\r\n getPlaceSoldDataFromAPI: context => {\r\n\r\n let p1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpGet.getPlaceSold(function (data) {\r\n context.commit('updateStoreWithPlaceSoldDataFromAPI', data)\r\n })\r\n });\r\n },\r\n addNewPlaceSoldToDatabase: (context, placeSoldData) => {\r\n for (let i = 0; i < placeSoldData.length; i++) {\r\n let a1 = new Promise(\r\n // The resolver function is called with the ability to resolve or reject the promise\r\n (resolve, reject) => {\r\n httpPost.postNewPlaceSold(placeSoldData[i], function (data) {\r\n for (let j = 0; j < context.state.PlaceSold.length; j++) {\r\n if (context.state.PlaceSold[j].RetailerName === placeSoldData[i].RetailerName) {\r\n context.state.PlaceSold[j].id = data\r\n context.state.PlaceSold[j].objectState = \"Current\"\r\n }\r\n }\r\n })\r\n });\r\n }\r\n\r\n },\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //End Of Place Sold Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //Account Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n getAccountDataFromAPI: context => {\r\n\r\n let p1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpGet.getAccounts(function (data) {\r\n context.commit('updateStoreWithAccountsDataFromAPI', data)\r\n })\r\n });\r\n },\r\n addNewAccountToDatabase: (context, accountData) => {\r\n //context.commit('addNewAccountToStore', accountData)\r\n\r\n for (let i = 0; i < accountData.length; i++) {\r\n let a1 = new Promise(\r\n // The resolver function is called with the ability to resolve or reject the promise\r\n (resolve, reject) => {\r\n httpPost.postNewAccount(accountData[i], function (data) {\r\n //for (let j = 0; j < context.state.Accounts.length; j++) {\r\n //if (context.state.Accounts[j].accountName === accountData[i].accountName) {\r\n accountData[i].id = data.data\r\n accountData[i].objectState = \"Current\"\r\n\r\n context.commit('updateStoreAfterPost', data)\r\n\r\n // }\r\n // }\r\n })\r\n });\r\n }\r\n \r\n },\r\n updateAccountinDatabase: (context, accountData) => {\r\n //context.commit('updateAccountinStore', accountData)\r\n\r\n for (let i = 0; i < accountData.length; i++) {\r\n let u1 = new Promise(\r\n // The resolver function is called with the ability to resolve or reject the promise\r\n (resolve, reject) => {\r\n httpPut.updateAccount(accountData[i], function (data) {\r\n if (data === 200) {\r\n for (let j = 0; j < context.state.Accounts.length; j++) {\r\n if (context.state.Accounts[j].id === accountData[i].id) {\r\n //context.state.Accounts[j].id = data\r\n context.state.Accounts[j].objectState = \"Current\"\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n\r\n },\r\n deleteAccountinDatabase: (context, accountData) => {\r\n //context.commit('updateAccountinStore', accountData)\r\n\r\n for (let i = 0; i < accountData.length; i++) {\r\n let d1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpDelete.deleteAccount(accountData[i], function (data) {\r\n if (data === 200) {\r\n context.commit('deleteAccountfromStore', accountData[i])\r\n }\r\n })\r\n });\r\n }\r\n },\r\n\r\n /////////////////////////////////////////////////////////\r\n //End Of Account Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //Transaction Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n getTransactionDataFromAPI: context => {\r\n let p1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpGet.getTransactions(function (data) {\r\n context.commit('updateStoreWithTransactionDataFromAPI', data)\r\n })\r\n });\r\n },\r\n addNewTransactionToDatabase: (context, transactionData) => {\r\n //context.commit('addNewIncomeToStore', transactionData)\r\n\r\n //for (let i = 0; i < transactionData.length; i++) {\r\n let a1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpPost.postNewTransaction(transactionData, function (data) {\r\n for (let i = 0; i < data.length; i++) {\r\n for (let j = 0; j < context.state.Transactions.length; j++) {\r\n if (context.state.Transactions[j].transactionName === data[i].transactionName) {\r\n context.state.Transactions[j].id = data[i].id\r\n context.state.Transactions[j].objectState = \"Current\"\r\n }\r\n }\r\n }\r\n })\r\n });\r\n //}\r\n }, \r\n updateTransactionInDatabase: (context, transactionData) => {\r\n //context.commit('updateIncomeinStore', transactionData)\r\n\r\n for (let i = 0; i < transactionData.length; i++) {\r\n let u1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpPut.updateTransaction(transactionData[i], function (data) {\r\n if (data === 200) {\r\n for (let j = 0; j < context.state.Transactions.length; j++) {\r\n if (context.state.Transactions[j].id === transactionData[i].id) {\r\n context.state.Transactions[j].objectState = \"Current\"\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n\r\n },\r\n deleteTransactionInDatabase: (context, transactionData) => {\r\n //context.commit('updateIncomeinStore', transactionData)\r\n\r\n for (let i = 0; i < transactionData.length; i++) {\r\n let d1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpDelete.deleteTransaction(transactionData[i], function (data) {\r\n if (data === 200) {\r\n context.commit('deleteTransactionfromStore', transactionData)\r\n }\r\n })\r\n });\r\n }\r\n },\r\n\r\n /////////////////////////////////////////////////////////\r\n //End Of Transaction Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //Item Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n getItemDataFromAPI: (context, query) => {\r\n let p1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpGet.getItems(query, function (data) {\r\n context.commit('updateStoreWithItemDataFromAPI', data)\r\n })\r\n });\r\n },\r\n addNewItemToDatabase: (context, itemData) => {\r\n //context.commit('addNewItemToStore', itemData)\r\n\r\n itemData = itemManager.formatAllAsItem(itemData)\r\n\r\n //for (let i = 0; i < itemData.length; i++) {\r\n let a1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpPost.postNewItem(itemData, function (data) {\r\n for (let i = 0; i < data.length; i++) {\r\n for (let j = 0; j < context.state.Items.length; j++) {\r\n if (context.state.Items[j].itemName === data[i].itemName) {\r\n context.state.Items[j].id = data[i].id\r\n context.state.Items[j].objectState = \"Current\"\r\n }\r\n }\r\n }\r\n })\r\n });\r\n //}\r\n },\r\n updateItemInDatabase: (context, itemData) => {\r\n //context.commit('updateIteminStore', itemData)\r\n\r\n for (let i = 0; i < itemData.length; i++) {\r\n let u1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpPut.updateItem(itemData, function (data) {\r\n if (data === 200) {\r\n for (let j = 0; j < context.state.Items.length; j++) {\r\n if (context.state.Items[j].id === itemData[i].id) {\r\n context.state.Items[j].objectState = \"Current\"\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n\r\n },\r\n deleteIteminDatabase: (context, itemData) => {\r\n\r\n for (let i = 0; i < itemData.length; i++) {\r\n let d1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpDelete.deleteItem(itemData, function (data) {\r\n if (data === 200) {\r\n context.commit('deleteItemfromStore', itemData)\r\n }\r\n })\r\n });\r\n }\r\n },\r\n\r\n /////////////////////////////////////////////////////////\r\n //End Of Item Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //Budget Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n getBudgetDataFromAPI: context => {\r\n let p1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpGet.getBudgets(function (data) {\r\n context.commit('updateStoreWithBudgetDataFromAPI', data)\r\n })\r\n });\r\n },\r\n addNewBudgetToDatabase: (context, budgetData) => {\r\n\r\n budgetData = formatAllAsBudget(budgetData)\r\n\r\n //for (let i = 0; i < budgetData.length; i++) {\r\n let a1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpPost.postNewBudget(budgetData, function (data) {\r\n for (let j = 0; j < context.state.Budgets.length; j++) {\r\n if (context.state.Budgets[j].budgetName === budgetData[i].budgetName) {\r\n context.state.Budgets[j].id = data\r\n context.state.Budgets[j].objectState = \"Current\"\r\n }\r\n }\r\n })\r\n });\r\n //}\r\n },\r\n updateBudgetInDatabase: (context, budgetData) => {\r\n \r\n for (let i = 0; i < budgetData.length; i++) {\r\n let u1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpPut.updateBudget(budgetData[i], function (data) {\r\n if (data === 200) {\r\n for (let j = 0; j < context.state.Budgets.length; j++) {\r\n if (context.state.Budgets[j].id === budgetData[i].id) {\r\n context.state.Budgets[j].objectState = \"Current\"\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n\r\n },\r\n deleteBudgetinDatabase: (context, budgetData) => {\r\n\r\n for (let i = 0; i < budgetData.length; i++) {\r\n let d1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpDelete.deleteBudget(budgetData[i], function (data) {\r\n if (data === 200) {\r\n context.commit('deleteBudgetfromStore', budgetData)\r\n }\r\n })\r\n });\r\n }\r\n },\r\n\r\n /////////////////////////////////////////////////////////\r\n //End Of Budget Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //Currency Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n getCurrencyDataFromAPI: context => {\r\n let p1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpGet.getCurrencies(function (data) {\r\n context.commit('updateStoreWithCurrencyDataFromAPI', data)\r\n })\r\n });\r\n },\r\n addNewCurrencyToDatabase: (context, currencyData) => {\r\n\r\n for (let i = 0; i < currencyData.length; i++) {\r\n let a1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpPost.postNewCurrency(currencyData[i], function (data) {\r\n for (let j = 0; j < context.state.Currencies.length; j++) {\r\n if (context.state.Currencies[j].currencyName === currencyData[i].currencyName) {\r\n context.state.Currencies[j].id = data\r\n context.state.Currencies[j].objectState = \"Current\"\r\n }\r\n }\r\n })\r\n });\r\n }\r\n },\r\n updateCurrencyInDatabase: (context, currencyData) => {\r\n\r\n for (let i = 0; i < currencyData.length; i++) {\r\n let u1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpPut.updateCurrency(currencyData[i], function (data) {\r\n if (data === 200) {\r\n for (let j = 0; j < context.state.Currencies.length; j++) {\r\n if (context.state.Currencies[j].id === currencyData[i].id) {\r\n context.state.Currencies[j].objectState = \"Current\"\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n\r\n },\r\n deleteCurrencyinDatabase: (context, currencyData) => {\r\n\r\n for (let i = 0; i < currencyData.length; i++) {\r\n let d1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpDelete.deleteCurrency(currencyData[i], function (data) {\r\n if (data === 200) {\r\n context.commit('deleteCurrencyfromStore', currencyData)\r\n }\r\n })\r\n });\r\n }\r\n },\r\n\r\n /////////////////////////////////////////////////////////\r\n //End Of Currency Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //Audit Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n getAuditDataFromAPI: context => {\r\n let p1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpGet.getAudit(function (data) {\r\n //context.commit('updateStoreWithCurrencyDataFromAPI', data)\r\n return data\r\n })\r\n });\r\n },\r\n\r\n /////////////////////////////////////////////////////////\r\n //End Of Audit Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //User Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n getUserDataFromAPI: (context, userId) => {\r\n let p1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpGet.getUser(function (data) {\r\n context.commit('updateStoreWithUserDataFromAPI', data)\r\n })\r\n });\r\n },\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //End Of User Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //User Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n getPeriodDataFromAPI: context => {\r\n let p1 = new Promise(\r\n // The resolver function is called with the ability to resolve or\r\n // reject the promise\r\n (resolve, reject) => {\r\n httpGet.getPeriod(function (data) {\r\n context.commit('updateSelectPeriodInStore', data)\r\n })\r\n });\r\n },\r\n\r\n\r\n /////////////////////////////////////////////////////////\r\n //End Of User Actions\r\n /////////////////////////////////////////////////////////\r\n\r\n getRefreshToken: (context, tokens) => {\r\n return new Promise((resolve, reject) => {\r\n httpPost.getNewToken(tokens, function (data) {\r\n if (globalFunctions.isNullOrEmpty(data.refreshToken) || globalFunctions.isNullOrEmpty(data.tokens)) { \r\n auth.login(data.refreshToken, data.token)\r\n }\r\n })\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","\r\nexport const plugins = store => {\r\n // Subscribe to store updates\r\n store.subscribe((mutation, state) => {\r\n // Store the state object as a JSON string\r\n localStorage.setItem('store', JSON.stringify(state))\r\n\r\n store.dispatch('makeChangesToAPI', mutation.type)\r\n })\r\n}\r\n","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport { state } from './state';\r\nimport { mutations } from './mutations';\r\nimport { getters } from './getters';\r\nimport { actions } from './actions';\r\nimport { plugins } from './plugins';\r\n\r\nVue.use(Vuex);\r\n\r\nexport const store = new Vuex.Store({\r\n state: state,\r\n mutations: mutations,\r\n getters: getters,\r\n actions: actions,\r\n plugins: [plugins]\r\n});\r\n","import { store } from '../store/storeMain'\r\nimport { globalFunctions } from './globalFunctions'\r\nimport { dateManager } from './dateManager'\r\n\r\n\r\nexport const budgetManager = {\r\n budgetObject: {\r\n id: 0,\r\n budgetName: '',\r\n account: '',\r\n budgetType: '',\r\n budgetAmount: 0,\r\n amountSpent: 0,\r\n refillAmount: 0,\r\n //refillDate: '',\r\n currency: '',\r\n comment: '',\r\n category: [],\r\n\r\n //Notification\r\n budgetOverspent: true,\r\n overspendingRisk: true,\r\n\r\n //State of Current Object\r\n objectState: 'New',\r\n },\r\n returnBudgets() {\r\n return store.state.Budgets\r\n },\r\n findBudgetByName(name) {\r\n let budgets = this.returnBudgets()\r\n\r\n for (let i = 0; i < budgets.length; i++) {\r\n if (budgets[i].budgetName === name) {\r\n return budgets[i]\r\n }\r\n }\r\n },\r\n findBudgetById(id) {\r\n let budgets = this.returnBudgets()\r\n\r\n for (let i = 0; i < budgets.length; i++) {\r\n if (budgets[i].id === id) {\r\n return budgets[i]\r\n }\r\n }\r\n },\r\n updateBudgetAmountSpent(budget, budgetBalance, amount) {\r\n budgetBalance.amountSpent = parseFloat(budgetBalance.amountSpent) + parseFloat(amount)\r\n\r\n for (let i = 0; i < budget.budgetBalances.length; i++) {\r\n if (budget.budgetBalances[i].id === budgetBalance.id) {\r\n budget.budgetBalances[i].amountSpent = budgetBalance.amountSpent\r\n break\r\n }\r\n }\r\n\r\n this.updateBudgetInStore(budget)\r\n },\r\n updateBudgetInStore(budget) {\r\n store.commit('updateBudgetinStore', budget)\r\n },\r\n increaseBudgetAmountSpent(budgetName, amount, transactionDate) {\r\n let budget = this.findBudgetByName(budgetName)\r\n\r\n let budgetBalance = this.getActiveBudgetBalance(budget, transactionDate)\r\n\r\n this.updateBudgetAmountSpent(budget, budgetBalance, amount)\r\n },\r\n\r\n //////////////////////////////////////////////////\r\n //Get Active Budget Balance\r\n //////////////////////////////////////////////////\r\n\r\n getActiveBudgetBalance(budget, date) {\r\n\r\n for (let i = 0; i < budget.budgetBalances.length; i++) {\r\n if (budget.budgetType !== \"None\") {\r\n if (budget.budgetBalances[i].objectState === \"Active\"\r\n || dateManager.isWithinDateRange(budget.budgetBalances[i].periodStart, budget.budgetBalances[i].periodEnd, date)) {\r\n\r\n return budget.budgetBalances[i]\r\n }\r\n }\r\n return budget.budgetBalances[0]\r\n }\r\n },\r\n\r\n formatBudgetForViewComponent(budgets) {\r\n for (let i = 0; i < budgets.length; i++) {\r\n let budgetBalanceData = this.getActiveBudgetBalance(budgets[i], new Date())\r\n\r\n budgets[i].budgetAmount = budgetBalanceData.budgetAmount\r\n budgets[i].amountSpent = budgetBalanceData.amountSpent\r\n }\r\n\r\n return budgets\r\n },\r\n\r\n //////////////////////////////////////////////////\r\n //Convert To budget Format\r\n /////////////////////////////////////////////////\r\n\r\n formatAsBudget(budget) {\r\n this.budgetObject.id = budget.id\r\n this.budgetObject.budgetName = budget.budgetName\r\n this.budgetObject.account = budget.account\r\n this.budgetObject.category = budget.category\r\n this.budgetObject.currency = budget.currency\r\n this.budgetObject.budgetType = budget.budgetType\r\n this.budgetObject.budgetAmount = parseFloat(budget.budgetAmount)\r\n this.budgetObject.amountSpent = parseFloat(budget.amountSpent)\r\n this.budgetObject.refillAmount = parseFloat(budget.refillAmount)\r\n this.budgetObject.comment = budget.comment\r\n this.budgetObject.budgetOverspent = budget.budgetOverspent\r\n this.budgetObject.overspendingRisk = budget.overspendingRisk\r\n this.budgetObject.objectState = budget.objectState\r\n\r\n return this.budgetObject\r\n },\r\n\r\n /////////////////////////////////////////////////\r\n //Convert All to budget Format\r\n /////////////////////////////////////////////////\r\n\r\n formatAllAsBudget(budgets) {\r\n let newBudgets = []\r\n\r\n for (let i = 0; i < budgets.length; i++) {\r\n newBudgets.push(globalFunctions.stringify(this.formatAsBudget(budgets[i])))\r\n }\r\n\r\n return newBudgets\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n /////////////////////////////////////////////////\r\n //Convert All to budget Format\r\n /////////////////////////////////////////////////\r\n\r\n export const formatAllAsBudget = (budgets) => {\r\n let newBudgets = []\r\n\r\n for (let i = 0; i < budgets.length; i++) {\r\n newBudgets.push(globalFunctions.stringify(budgetManager.formatAsBudget(budgets[i])))\r\n }\r\n\r\n return newBudgets\r\n }\r\n"],"sourceRoot":""}