{"version":3,"sources":["webpack:///../../../src/components/VDataTable/VSimpleTable.ts","webpack:///./src/javascript/widgetManager.js","webpack:///./src/components/widgets/expenseWidget/eWMComponents/expenseCategoryTotals.vue?0a9f","webpack:///src/components/widgets/expenseWidget/eWMComponents/expenseCategoryTotals.vue","webpack:///./src/components/widgets/expenseWidget/eWMComponents/expenseCategoryTotals.vue?51de","webpack:///./src/components/widgets/expenseWidget/eWMComponents/expenseCategoryTotals.vue"],"names":["name","props","dense","fixedHeader","height","Number","String","computed","classes","this","$slots","themeClasses","methods","genWrapper","wrapper","$createElement","staticClass","style","render","h","class","widgetManager","tableData","tableTotal","itemsMinusDeleted","tableRow","value","percentage","clearTableRow","buildTable","period","i","length","isItemWithinPeriod","transactionBalances","transactionDate","convertToTableRow","addToTableData","calculatePercentages","parseFloat","toFixed","item","push","globalFunctions","stringify","category","transactionAmount","clearOldData","itemDate","start","end","date","Date","returnFormattedDateFromCalendar","dateSplit","split","parseInt","buildIncomeCategoryTotals","getIncomeItemsFromStoreAndRemoveDeletedItems","items","getIncomeTransactions","store","state","Transactions","removeDeletedObjectsFromItems","incomes","transactionType","buildExpenseCategoryTotals","getExpenseItemsFromStoreAndRemoveDeletedItems","getExpenseTransactions","expenses","buildBudgetTotals","getBudgetItemsFromStoreAndRemoveDeletedItems","createTableRows","buildBudgetTable","buildSingleBudgetTotals","budgetId","buildSingleBudgetTable","budgetManager","findBudgetById","Budgets","budgetBalance","getActiveBudgetBalance","addToBudgetTableData","budget","budgetName","amountSpent","budgetAmount","returnIncomeCategoriesAndThereItems","buildJsonObject","jsonObject","k","returnExpenseCategoriesAndThereItems","_vm","_h","_c","_self","staticStyle","attrs","scopedSlots","_u","key","fn","_v","_l","_s","asMoney","proxy","staticRenderFns","component","VCard","VSimpleTable"],"mappings":"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","file":"js/chunk-f51c0d88.c987de57.js","sourcesContent":["import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import { store } from '../store/storeMain'\r\n//import { transactionManager } from './transactionManager'\r\nimport { globalFunctions } from './globalFunctions'\r\nimport { budgetManager } from './budgetManager'\r\n\r\nexport const widgetManager = {\r\n tableData: [],\r\n tableTotal: 0,\r\n itemsMinusDeleted: [],\r\n tableRow: {\r\n name: '',\r\n value: 0,\r\n percentage: 0\r\n },\r\n clearTableRow: function () {\r\n this.tableRow.name = ''\r\n this.tableRow.value = 0\r\n this.tableRow.percentage = 0\r\n },\r\n buildTable: function (period) {\r\n for (let i = 0; i < this.itemsMinusDeleted.length; i++) {\r\n\r\n if (this.isItemWithinPeriod(\r\n this.itemsMinusDeleted[i].transactionBalances[this.itemsMinusDeleted[i].transactionBalances.length - 1].transactionDate,\r\n period)) {\r\n\r\n this.convertToTableRow(this.itemsMinusDeleted[i])\r\n\r\n this.addToTableData()\r\n\r\n this.calculatePercentages()\r\n }\r\n }\r\n },\r\n calculatePercentages: function () {\r\n for (let i = 0; i < this.tableData.length; i++) {\r\n this.tableData[i].percentage = ((parseFloat(this.tableData[i].value) / parseFloat(this.tableTotal)) * 100).toFixed(2)\r\n }\r\n },\r\n addToTableData: function () {\r\n let item = this.tableRow\r\n\r\n if (this.tableData.length === 0) {\r\n this.tableData.push(globalFunctions.stringify(item))\r\n this.tableTotal = parseFloat(this.tableTotal) + parseFloat(item.value)\r\n }\r\n else {\r\n for (let i = 0; i < this.tableData.length; i++) {\r\n if (this.tableData[i].name === item.name) {\r\n this.tableData[i].value = parseFloat(this.tableData[i].value) + parseFloat(item.value)\r\n this.tableTotal = parseFloat(this.tableTotal) + parseFloat(item.value)\r\n break\r\n }\r\n else if (i === this.tableData.length - 1) {\r\n this.tableData.push(globalFunctions.stringify(item))\r\n this.tableTotal = parseFloat(this.tableTotal) + parseFloat(item.value)\r\n break\r\n }\r\n }\r\n }\r\n },\r\n convertToTableRow: function (item) {\r\n this.clearTableRow()\r\n\r\n this.tableRow.name = item.category\r\n\r\n for (let i = 0; i < item.transactionBalances.length; i++) {\r\n this.tableRow.value = parseFloat(this.tableRow.value) + parseFloat(item.transactionBalances[i].transactionAmount)\r\n }\r\n },\r\n clearOldData: function () {\r\n this.tableData = []\r\n this.tableTotal = 0,\r\n this.itemsMinusDeleted = []\r\n },\r\n isItemWithinPeriod: function (itemDate, period) {\r\n let start = ''\r\n let end = ''\r\n let date = new Date(this.returnFormattedDateFromCalendar(itemDate))\r\n\r\n let dateSplit = period.split(\" - \")\r\n\r\n start = new Date(dateSplit[0])\r\n end = new Date(dateSplit[1])\r\n\r\n if (date >= start && date <= end) {\r\n return true\r\n }\r\n\r\n return false\r\n },\r\n returnFormattedDateFromCalendar(date) {\r\n let dateSplit = date.split(\"-\")\r\n\r\n return (dateSplit[0] + \"-\" + parseInt(dateSplit[1]) + \"-\" + (parseInt(dateSplit[2])))\r\n },\r\n \r\n\r\n ///////////////////////////////////////////////////////////////////////\r\n //Income Specific\r\n ///////////////////////////////////////////////////////////////////////\r\n\r\n buildIncomeCategoryTotals: function (period) {\r\n this.clearOldData()\r\n this.getIncomeItemsFromStoreAndRemoveDeletedItems()\r\n\r\n this.buildTable(period)\r\n\r\n return {\r\n tableData: this.tableData,\r\n tableTotal: this.tableTotal\r\n }\r\n },\r\n getIncomeItemsFromStoreAndRemoveDeletedItems: function () {\r\n this.items = this.getIncomeTransactions(store.state.Transactions)\r\n\r\n\r\n ///Remove deleted items from items array\r\n this.itemsMinusDeleted = globalFunctions.removeDeletedObjectsFromItems(this.items)\r\n },\r\n getIncomeTransactions: function (items) {\r\n let incomes = []\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].transactionType === \"income\") {\r\n incomes.push(items[i])\r\n }\r\n }\r\n\r\n return incomes\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////////////////////////////\r\n //Expense Specific\r\n ///////////////////////////////////////////////////////////////////////\r\n\r\n buildExpenseCategoryTotals: function (period) {\r\n this.clearOldData()\r\n this.getExpenseItemsFromStoreAndRemoveDeletedItems()\r\n\r\n this.buildTable(period)\r\n\r\n return {\r\n tableData: this.tableData,\r\n tableTotal: this.tableTotal\r\n }\r\n },\r\n getExpenseItemsFromStoreAndRemoveDeletedItems: function () {\r\n this.items = this.getExpenseTransactions(store.state.Transactions)\r\n\r\n ///Remove deleted items from items array\r\n this.itemsMinusDeleted = globalFunctions.removeDeletedObjectsFromItems(this.items)\r\n },\r\n getExpenseTransactions: function (items) {\r\n let expenses = []\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].transactionType === \"expense\") {\r\n expenses.push(items[i])\r\n }\r\n }\r\n\r\n return expenses\r\n },\r\n\r\n\r\n ///////////////////////////////////////////////////////////////////////\r\n //Budget Specific\r\n ///////////////////////////////////////////////////////////////////////\r\n\r\n buildBudgetTotals: function (date) {\r\n this.clearOldData()\r\n this.getBudgetItemsFromStoreAndRemoveDeletedItems()\r\n\r\n this.createTableRows()\r\n\r\n this.buildBudgetTable(date)\r\n\r\n if (this.tableData[0].value === 0 && this.tableData[1].value === 0) {\r\n this.tableData = []\r\n }\r\n\r\n return {\r\n tableData: this.tableData,\r\n tableTotal: this.tableTotal\r\n }\r\n },\r\n buildSingleBudgetTotals: function (budgetId, date) {\r\n this.clearOldData()\r\n this.getBudgetItemsFromStoreAndRemoveDeletedItems()\r\n\r\n this.createTableRows()\r\n\r\n this.buildSingleBudgetTable(budgetManager.findBudgetById(budgetId), date)\r\n\r\n if (this.tableData[0].value === 0 && this.tableData[1].value === 0) {\r\n this.tableData = []\r\n }\r\n\r\n return {\r\n tableData: this.tableData,\r\n tableTotal: this.tableTotal\r\n }\r\n },\r\n getBudgetItemsFromStoreAndRemoveDeletedItems: function () {\r\n this.items = store.state.Budgets\r\n\r\n\r\n ///Remove deleted items from items array\r\n this.itemsMinusDeleted = globalFunctions.removeDeletedObjectsFromItems(this.items)\r\n },\r\n createTableRows: function () {\r\n this.tableData.push({\r\n name: 'Spent',\r\n value: 0,\r\n percentage: 0\r\n },\r\n {\r\n name: 'Remaining',\r\n value: 0,\r\n percentage: 0\r\n })\r\n },\r\n buildBudgetTable: function (date) {\r\n for (let i = 0; i < this.itemsMinusDeleted.length; i++) {\r\n let budgetBalance = budgetManager.getActiveBudgetBalance(this.itemsMinusDeleted[i], date)\r\n\r\n this.addToBudgetTableData(budgetBalance)\r\n\r\n this.calculatePercentages()\r\n }\r\n },\r\n buildSingleBudgetTable: function (budget, date) {\r\n for (let i = 0; i < this.itemsMinusDeleted.length; i++) {\r\n if (this.itemsMinusDeleted[i].budgetName === budget.budgetName) {\r\n let budgetBalance = budgetManager.getActiveBudgetBalance(this.itemsMinusDeleted[i], date)\r\n\r\n this.addToBudgetTableData(budgetBalance)\r\n\r\n this.calculatePercentages()\r\n }\r\n }\r\n },\r\n addToBudgetTableData: function (item) {\r\n //Update Spent\r\n this.tableData[0].value = parseFloat(this.tableData[0].value) + parseFloat(item.amountSpent)\r\n\r\n //Update Remaining\r\n this.tableData[1].value = parseFloat(this.tableData[1].value) + (parseFloat(item.budgetAmount) - parseFloat(item.amountSpent))\r\n\r\n this.tableTotal = parseFloat(this.tableTotal) + parseFloat(item.budgetAmount)\r\n },\r\n\r\n}\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////\r\n//Income Items By Category Functions\r\n///////////////////////////////////////////////////////////////////////\r\n\r\nexport const returnIncomeCategoriesAndThereItems = (period) => {\r\n let items = getIncomeItemsFromStoreAndRemoveDeletedItems()\r\n\r\n return buildJsonObject(period, items)\r\n}\r\n\r\nexport const getIncomeItemsFromStoreAndRemoveDeletedItems = () => {\r\n let items = widgetManager.getIncomeTransactions(store.state.Transactions)\r\n\r\n ///Remove deleted items from items array\r\n return globalFunctions.removeDeletedObjectsFromItems(items)\r\n}\r\n\r\nexport const buildJsonObject = (period, items) => {\r\n let jsonObject = []\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n\r\n if (widgetManager.isItemWithinPeriod(\r\n items[i].transactionBalances[items[0].transactionBalances.length - 1].transactionDate,\r\n period)) {\r\n\r\n if (jsonObject.length === 0) {\r\n jsonObject[0] = [items[i].category, [items[i]]]\r\n\r\n continue\r\n }\r\n\r\n for (let k = 0; k < jsonObject.length; k++) {\r\n if (jsonObject[k][0] === items[i].category) {\r\n jsonObject[k][1].push(items[i])\r\n\r\n continue\r\n } else if (k === jsonObject.length - 1) {\r\n jsonObject.push([items[i].category, [items[i]]])\r\n break\r\n }\r\n }\r\n }\r\n }\r\n\r\n return jsonObject\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////\r\n//End Of Income Items By Category Functions\r\n///////////////////////////////////////////////////////////////////////\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////\r\n//Expense Items By Category Functions\r\n///////////////////////////////////////////////////////////////////////\r\n\r\nexport const returnExpenseCategoriesAndThereItems = (period) => {\r\n let items = getExpenseItemsFromStoreAndRemoveDeletedItems()\r\n\r\n return buildJsonObject(period, items)\r\n}\r\n\r\nexport const getExpenseItemsFromStoreAndRemoveDeletedItems = () => {\r\n let items = widgetManager.getExpenseTransactions(store.state.Transactions)\r\n\r\n ///Remove deleted items from items array\r\n return globalFunctions.removeDeletedObjectsFromItems(items)\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////\r\n//End Of Expense Items By Category Functions\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-card',[_c('donutChart',{staticStyle:{\"height\":\"200px\"},attrs:{\"value\":_vm.tableData}}),_c('v-simple-table',{attrs:{\"fixed-header\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"CATEGORY\")]),_c('th',{staticClass:\"text-left\"},[_c('span',{staticStyle:{\"color\":\"#F44336\"}},[_vm._v(\"EXPENSE\")])]),_c('th')])]),_c('tbody',[_vm._l((_vm.tableData),function(item){return _c('tr',{key:item.name},[_c('td',[_vm._v(_vm._s(item.name))]),_c('td',[_c('span',{staticStyle:{\"color\":\"#F44336\"}},[_vm._v(\"- \"+_vm._s(_vm.asMoney(item.value)))])]),_c('td',[_vm._v(_vm._s(item.percentage)+\"%\")])])}),_c('tr',[_c('td',[_c('b',[_vm._v(\"TOTAL\")])]),_c('td',[_c('b',[_c('span',{staticStyle:{\"color\":\"#F44336\"}},[_vm._v(\"- \"+_vm._s(_vm.asMoney(_vm.tableTotal)))])])]),_c('td',[_c('b',[_vm._v(\"100%\")])])])],2)]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"," \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!./expenseCategoryTotals.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!./expenseCategoryTotals.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./expenseCategoryTotals.vue?vue&type=template&id=30c6410a&\"\nimport script from \"./expenseCategoryTotals.vue?vue&type=script&lang=js&\"\nexport * from \"./expenseCategoryTotals.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 { VCard } from 'vuetify/lib/components/VCard';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VCard,VSimpleTable})\n"],"sourceRoot":""}