From 45d9199dbbf41bd50a6296959f7f9793104239e2 Mon Sep 17 00:00:00 2001 From: elforjani3 Date: Thu, 11 Jun 2020 20:41:18 +0200 Subject: [PATCH] WIP feature/expenses --- client/src/components/Expenses/ExpenseForm.js | 446 +++++++++--------- .../components/Expenses/ExpensesActionsBar.js | 154 +++--- .../src/components/Expenses/ExpensesTable.js | 174 +++---- .../components/Expenses/ExpensesViewsTabs.js | 92 ++-- client/src/config/sidebarMenu.js | 6 +- .../src/containers/Accounts/AccountsChart.js | 2 +- .../Accounts/withAccountsActions.js | 4 +- .../containers/Dialogs/AccountFormDialog.js | 81 ++-- .../containers/Expenses/ExpenseActionsBar.js | 145 ++++++ .../containers/Expenses/ExpenseDataTable.js | 261 ++++++++++ .../src/containers/Expenses/ExpenseFooter.js | 45 ++ client/src/containers/Expenses/ExpenseForm.js | 354 ++++++++++++-- .../containers/Expenses/ExpenseFormHeader.js | 262 ++++++++++ .../src/containers/Expenses/ExpenseTable.js | 239 ++++++++++ .../containers/Expenses/ExpenseViewTabs.js | 124 +++++ client/src/containers/Expenses/Expenses.js | 69 +++ .../src/containers/Expenses/ExpensesList.js | 288 ++++++++--- .../containers/Expenses/withExpenseDetail.js | 11 + .../src/containers/Expenses/withExpenses.js | 18 + .../Expenses/withExpensesActions.js | 37 ++ client/src/lang/en/index.js | 36 +- client/src/routes/dashboard.js | 24 + client/src/store/expenses/expenses.actions.js | 151 +++++- client/src/store/expenses/expenses.reducer.js | 89 +++- .../src/store/expenses/expenses.selectors.js | 10 + client/src/store/expenses/expenses.types.js | 11 +- client/src/style/pages/expense-form.scss | 244 +++++++++- 27 files changed, 2761 insertions(+), 616 deletions(-) create mode 100644 client/src/containers/Expenses/ExpenseActionsBar.js create mode 100644 client/src/containers/Expenses/ExpenseDataTable.js create mode 100644 client/src/containers/Expenses/ExpenseFooter.js create mode 100644 client/src/containers/Expenses/ExpenseFormHeader.js create mode 100644 client/src/containers/Expenses/ExpenseTable.js create mode 100644 client/src/containers/Expenses/ExpenseViewTabs.js create mode 100644 client/src/containers/Expenses/Expenses.js create mode 100644 client/src/containers/Expenses/withExpenseDetail.js create mode 100644 client/src/containers/Expenses/withExpenses.js create mode 100644 client/src/containers/Expenses/withExpensesActions.js create mode 100644 client/src/store/expenses/expenses.selectors.js diff --git a/client/src/components/Expenses/ExpenseForm.js b/client/src/components/Expenses/ExpenseForm.js index a902ac1b7..011c0d828 100644 --- a/client/src/components/Expenses/ExpenseForm.js +++ b/client/src/components/Expenses/ExpenseForm.js @@ -1,246 +1,246 @@ -import React, { useState } from 'react'; -import * as Yup from 'yup'; -import { useFormik } from 'formik'; -import { - FormGroup, - MenuItem, - Intent, - InputGroup, - Position, - Button, - TextArea, - ControlGroup -} from '@blueprintjs/core'; -import { DateInput } from '@blueprintjs/datetime'; -import { Select } from '@blueprintjs/select'; -import { FormattedMessage as T, useIntl } from 'react-intl'; -import { momentFormatter } from 'utils'; -import moment from 'moment'; -import AppToaster from 'components/AppToaster'; +// import React, { useState } from 'react'; +// import * as Yup from 'yup'; +// import { useFormik } from 'formik'; +// import { +// FormGroup, +// MenuItem, +// Intent, +// InputGroup, +// Position, +// Button, +// TextArea, +// ControlGroup +// } from '@blueprintjs/core'; +// import { DateInput } from '@blueprintjs/datetime'; +// import { Select } from '@blueprintjs/select'; +// import { FormattedMessage as T, useIntl } from 'react-intl'; +// import { momentFormatter } from 'utils'; +// import moment from 'moment'; +// import AppToaster from 'components/AppToaster'; -export default function ExpenseForm({ - accounts, - editExpense, - submitExpense, - expenseDetails, - currencies -}) { - const {formatMessage} = useIntl(); +// export default function ExpenseForm({ +// accounts, +// editExpense, +// submitExpense, +// expenseDetails, +// currencies +// }) { +// const {formatMessage} = useIntl(); - const [state, setState] = useState({ - selectedExpenseAccount: null, - selectedPaymentAccount: null - }); - const validationSchema = Yup.object().shape({ - date: Yup.date().required().label(formatMessage({id:'date'})), - description: Yup.string().trim().label(formatMessage({id:'description'})), - expense_account_id: Yup.number().required().label(formatMessage({id:'expense_account_id'})), - payment_account_id: Yup.number().required().label(formatMessage({id:'payment_account_id'})), - amount: Yup.number().required().label(formatMessage({id:'amount'})), - currency_code: Yup.string().required().label(formatMessage({id:'currency_code_'})), - publish: Yup.boolean().label(formatMessage({id:'publish'})), - exchange_rate: Yup.number().label(formatMessage({id:'exchange_rate_'})) - }); +// const [state, setState] = useState({ +// selectedExpenseAccount: null, +// selectedPaymentAccount: null +// }); +// const validationSchema = Yup.object().shape({ +// date: Yup.date().required().label(formatMessage({id:'date'})), +// description: Yup.string().trim().label(formatMessage({id:'description'})), +// expense_account_id: Yup.number().required().label(formatMessage({id:'expense_account_id'})), +// payment_account_id: Yup.number().required().label(formatMessage({id:'payment_account_id'})), +// amount: Yup.number().required().label(formatMessage({id:'amount'})), +// currency_code: Yup.string().required().label(formatMessage({id:'currency_code_'})), +// publish: Yup.boolean().label(formatMessage({id:'publish'})), +// exchange_rate: Yup.number().label(formatMessage({id:'exchange_rate_'})) +// }); - const formik = useFormik({ - enableReinitialize: true, - validationSchema: validationSchema, - initialValues: { - date: null - }, - onSubmit: values => { - submitExpense(values) - .then(response => { - AppToaster.show({ - message: formatMessage({id:'the_expense_has_been_successfully_created'}) - }); - }) - .catch(error => {}); - } - }); +// const formik = useFormik({ +// enableReinitialize: true, +// validationSchema: validationSchema, +// initialValues: { +// date: null +// }, +// onSubmit: values => { +// submitExpense(values) +// .then(response => { +// AppToaster.show({ +// message: formatMessage({id:'the_expense_has_been_successfully_created'}) +// }); +// }) +// .catch(error => {}); +// } +// }); - // Account item of select accounts field. - const accountItem = (item, { handleClick, modifiers, query }) => { - return ( - - ); - }; +// // Account item of select accounts field. +// const accountItem = (item, { handleClick, modifiers, query }) => { +// return ( +// +// ); +// }; - const onChangeAccount = () => {}; +// const onChangeAccount = () => {}; - const onChangePaymentAccount = () => {}; +// const onChangePaymentAccount = () => {}; - const handleDateChange = date => { - const formatted = moment(date).format('YYYY/MM/DD'); - formik.setFieldValue('date', formatted); - }; +// const handleDateChange = date => { +// const formatted = moment(date).format('YYYY/MM/DD'); +// formik.setFieldValue('date', formatted); +// }; - // Filters accounts items. - const filterAccountsPredicater = (query, account, _index, exactMatch) => { - const normalizedTitle = account.name.toLowerCase(); - const normalizedQuery = query.toLowerCase(); +// // Filters accounts items. +// const filterAccountsPredicater = (query, account, _index, exactMatch) => { +// const normalizedTitle = account.name.toLowerCase(); +// const normalizedQuery = query.toLowerCase(); - if (exactMatch) { - return normalizedTitle === normalizedQuery; - } else { - return `${account.code} ${normalizedTitle}`.indexOf(normalizedQuery) >= 0; - } - }; +// if (exactMatch) { +// return normalizedTitle === normalizedQuery; +// } else { +// return `${account.code} ${normalizedTitle}`.indexOf(normalizedQuery) >= 0; +// } +// }; - const onExpenseAccountSelect = account => { - setState({ ...state, selectedExpenseAccount: account }); - formik.setFieldValue('expense_account_id', account.id); - }; +// const onExpenseAccountSelect = account => { +// setState({ ...state, selectedExpenseAccount: account }); +// formik.setFieldValue('expense_account_id', account.id); +// }; - const onChangePaymentAccountSelect = account => { - setState({ ...state, selectedPaymentAccount: account }); - formik.setFieldValue('payment_account_id', account.id); - }; +// const onChangePaymentAccountSelect = account => { +// setState({ ...state, selectedPaymentAccount: account }); +// formik.setFieldValue('payment_account_id', account.id); +// }; - const onAmountCurrencySelect = currency => { - formik.setFieldValue('currency_code', currency.id); - }; +// const onAmountCurrencySelect = currency => { +// formik.setFieldValue('currency_code', currency.id); +// }; - const paymentAccountLabel = state.selectedPaymentAccount - ? state.selectedPaymentAccount.name - : ; +// const paymentAccountLabel = state.selectedPaymentAccount +// ? state.selectedPaymentAccount.name +// : ; - const expenseAccountLabel = state.selectedExpenseAccount - ? state.selectedExpenseAccount.name - : ; +// const expenseAccountLabel = state.selectedExpenseAccount +// ? state.selectedExpenseAccount.name +// : ; - const handleClose = () => {}; +// const handleClose = () => {}; - return ( -
-
- } - inline={true} - intent={formik.errors.date && Intent.DANGER} - helperText={formik.errors.date && formik.errors.date} - > - - +// return ( +//
+// +// } +// inline={true} +// intent={formik.errors.date && Intent.DANGER} +// helperText={formik.errors.date && formik.errors.date} +// > +// +// - } - className={'form-group--expense-account'} - inline={true} - intent={formik.errors.expense_account_id && Intent.DANGER} - helperText={ - formik.errors.expense_account_id && formik.errors.expense_account_id - } - > - - +// } +// className={'form-group--expense-account'} +// inline={true} +// intent={formik.errors.expense_account_id && Intent.DANGER} +// helperText={ +// formik.errors.expense_account_id && formik.errors.expense_account_id +// } +// > +// +// - } - className={'form-group--amount'} - intent={formik.errors.amount && Intent.DANGER} - helperText={formik.errors.amount && formik.errors.amount} - inline={true} - > - - +// } +// className={'form-group--amount'} +// intent={formik.errors.amount && Intent.DANGER} +// helperText={formik.errors.amount && formik.errors.amount} +// inline={true} +// > +// +// - - - +// +// +// - } - className={'form-group--exchange-rate'} - inline={true} - > - - +// } +// className={'form-group--exchange-rate'} +// inline={true} +// > +// +// - } - className={'form-group--payment-account'} - inline={true} - intent={formik.errors.payment_account_id && Intent.DANGER} - helperText={ - formik.errors.payment_account_id && formik.errors.payment_account_id - } - > - - +// } +// className={'form-group--payment-account'} +// inline={true} +// intent={formik.errors.payment_account_id && Intent.DANGER} +// helperText={ +// formik.errors.payment_account_id && formik.errors.payment_account_id +// } +// > +// +// - } - className={'form-group--description'} - inline={true} - > -