fix: project form.

This commit is contained in:
elforjani13
2022-06-11 13:29:33 +02:00
parent cb0a315ca6
commit bee7896279
11 changed files with 69 additions and 34 deletions

View File

@@ -9,6 +9,7 @@ import {
TextArea, TextArea,
} from '@blueprintjs-formik/core'; } from '@blueprintjs-formik/core';
import { Select, MultiSelect } from '@blueprintjs-formik/select'; import { Select, MultiSelect } from '@blueprintjs-formik/select';
import { DateInput } from '@blueprintjs-formik/datetime';
export { export {
FormGroup as FFormGroup, FormGroup as FFormGroup,
@@ -21,4 +22,5 @@ export {
MultiSelect as FMultiSelect, MultiSelect as FMultiSelect,
EditableText as FEditableText, EditableText as FEditableText,
TextArea as FTextArea, TextArea as FTextArea,
DateInput as FDateInput,
}; };

View File

@@ -15,11 +15,12 @@ import { useProjectFormContext } from './ProjectFormProvider';
import { compose } from 'utils'; import { compose } from 'utils';
const defaultInitialValues = { const defaultInitialValues = {
contact:'', contact: '',
project_name:'', project_name: '',
project_deadline: moment(new Date()).format('YYYY-MM-DD'), project_deadline: '',
// project_deadline: moment(new Date()).format('YYYY-MM-DD'),
project_state: false, project_state: false,
project_cost:'' project_cost: '',
}; };
/** /**

View File

@@ -1,3 +1,4 @@
// @ts-nocheck
import React from 'react'; import React from 'react';
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
@@ -10,11 +11,11 @@ import {
FFormGroup, FFormGroup,
FInputGroup, FInputGroup,
FCheckbox, FCheckbox,
FDateInput,
FMoneyInputGroup, FMoneyInputGroup,
InputPrependText, InputPrependText,
FormattedMessage as T, FormattedMessage as T,
CustomerSelectField, CustomerSelectField,
FCustomerSelectField,
} from 'components'; } from 'components';
import { import {
inputIntent, inputIntent,
@@ -22,24 +23,27 @@ import {
tansformDateValue, tansformDateValue,
handleDateChange, handleDateChange,
} from 'utils'; } from 'utils';
import { useProjectFormContext } from './ProjectFormProvider';
/** /**
* Project form fields. * Project form fields.
* @returns * @returns
*/ */
function ProjectFormFields() { function ProjectFormFields() {
const { customers } = useProjectFormContext();
return ( return (
<div className={Classes.DIALOG_BODY}> <div className={Classes.DIALOG_BODY}>
{/*------------ Contact -----------*/} {/*------------ Contact -----------*/}
<FastField name={'contact'}> <FastField name={'contact'}>
{({ form, field: { value }, meta: { error, touched } }) => ( {({ form, field: { value }, meta: { error, touched } }) => (
<FormGroup <FormGroup
label={'Contact'} label={intl.get('projects.label.contact')}
className={classNames('form-group--select-list', Classes.FILL)} className={classNames('form-group--select-list', Classes.FILL)}
intent={inputIntent({ error, touched })} intent={inputIntent({ error, touched })}
> >
<CustomerSelectField <CustomerSelectField
contacts={[]} contacts={customers}
selectedContactId={value} selectedContactId={value}
defaultSelectText={'Select Contact Account'} defaultSelectText={'Select Contact Account'}
onContactSelected={(customer) => { onContactSelected={(customer) => {
@@ -51,22 +55,21 @@ function ProjectFormFields() {
</FormGroup> </FormGroup>
)} )}
</FastField> </FastField>
{/*------------ Project Name -----------*/} {/*------------ Project Name -----------*/}
<FFormGroup label={'Project Name'} name={'project_name'}> <FFormGroup
label={intl.get('projects.label.project_name')}
name={'project_name'}
>
<FInputGroup name="project_name" /> <FInputGroup name="project_name" />
</FFormGroup> </FFormGroup>
{/*------------ DeadLine -----------*/} {/*------------ DeadLine -----------*/}
<FFormGroup <FFormGroup
label={'DeadLine'} label={intl.get('projects.label.deadline')}
name={'project_deadline'} name={'project_deadline'}
className={classNames(CLASSES.FILL, 'form-group--date')} className={classNames(CLASSES.FILL, 'form-group--date')}
> >
<DateInput <FDateInput
{...momentFormatter('YYYY/MM/DD')} name="project_deadline"
// onChange={handleDateChange((formattedDate) => {
// })}
// value={tansformDateValue(value)}
popoverProps={{ popoverProps={{
position: Position.BOTTOM, position: Position.BOTTOM,
minimal: true, minimal: true,
@@ -78,11 +81,14 @@ function ProjectFormFields() {
<FFormGroup name={'project_state'}> <FFormGroup name={'project_state'}>
<FCheckbox <FCheckbox
name="project_state" name="project_state"
label={'Calculato from tasks & estimated expenses'} label={intl.get('projects.label.calculator_expenses')}
/> />
</FFormGroup> </FFormGroup>
{/*------------ Cost Estimate -----------*/} {/*------------ Cost Estimate -----------*/}
<FFormGroup name={'project_cost'} label={' Cost Estimate'}> <FFormGroup
name={'project_cost'}
label={intl.get('projects.label.cost_estimate')}
>
<ControlGroup> <ControlGroup>
<InputPrependText text={'USD'} /> <InputPrependText text={'USD'} />
<FMoneyInputGroup <FMoneyInputGroup

View File

@@ -1,5 +1,6 @@
// @ts-nocheck // @ts-nocheck
import React from 'react'; import React from 'react';
import { useCustomers } from 'hooks/query';
import { DialogContent } from 'components'; import { DialogContent } from 'components';
@@ -16,13 +17,19 @@ function ProjectFormProvider({
projectId, projectId,
...props ...props
}) { }) {
// Handle fetch customers data table or list
const {
data: { customers },
isLoading: isCustomersLoading,
} = useCustomers({ page_size: 10000 });
// State provider. // State provider.
const provider = {}; const provider = {
customers,
};
return ( return (
<DialogContent <DialogContent isLoading={isCustomersLoading}>
// isLoading={}
>
<ProjectFormContext.Provider value={provider} {...props} /> <ProjectFormContext.Provider value={provider} {...props} />
</DialogContent> </DialogContent>
); );

View File

@@ -16,7 +16,7 @@ function ProjectDialog({ dialogName, payload: { projectId = null }, isOpen }) {
return ( return (
<Dialog <Dialog
name={dialogName} name={dialogName}
title={'New Project'} title={<T id={'projects.label.new_project'} />}
isOpen={isOpen} isOpen={isOpen}
autoFocus={true} autoFocus={true}
canEscapeKeyClose={true} canEscapeKeyClose={true}

View File

@@ -18,19 +18,22 @@ function TaskFormFields() {
return ( return (
<div className={Classes.DIALOG_BODY}> <div className={Classes.DIALOG_BODY}>
{/*------------ Task Name -----------*/} {/*------------ Task Name -----------*/}
<FFormGroup label={'Task Name'} name={'task_name'}> <FFormGroup label={<T id={'task.label.task_name'} />} name={'task_name'}>
<FInputGroup name="task_name" /> <FInputGroup name="task_name" />
</FFormGroup> </FFormGroup>
{/*------------ Estimated Hours -----------*/} {/*------------ Estimated Hours -----------*/}
<Row> <Row>
<Col xs={4}> <Col xs={4}>
<FFormGroup label={'Estimated Hours'} name={'task_house'}> <FFormGroup
label={<T id={'task.label.estimated_hours'} />}
name={'task_house'}
>
<FInputGroup name="task_house" /> <FInputGroup name="task_house" />
</FFormGroup> </FFormGroup>
</Col> </Col>
{/*------------ Charge -----------*/} {/*------------ Charge -----------*/}
<Col xs={8}> <Col xs={8}>
<FFormGroup label={'Charge'} name={'Charge'}> <FFormGroup label={<T id={'task.label.charge'} />} name={'Charge'}>
<ControlGroup> <ControlGroup>
<FInputGroup name="change" /> <FInputGroup name="change" />
<FInputGroup name="change_amount" /> <FInputGroup name="change_amount" />
@@ -41,7 +44,7 @@ function TaskFormFields() {
{/*------------ Estimated Amount -----------*/} {/*------------ Estimated Amount -----------*/}
<EstimatedAmountBase> <EstimatedAmountBase>
<EstimatedAmountContent> <EstimatedAmountContent>
Estimated Amount: <T id={'task.label.estimated_amount'} />
<EstimateAmount>$100000</EstimateAmount> <EstimateAmount>$100000</EstimateAmount>
</EstimatedAmountContent> </EstimatedAmountContent>
</EstimatedAmountBase> </EstimatedAmountBase>

View File

@@ -1,11 +1,12 @@
import React from 'react'; import React from 'react';
import styled from 'styled-components'; import styled from 'styled-components';
import intl from 'react-intl-universal';
import { Dialog, DialogSuspense, FormattedMessage as T } from 'components'; import { Dialog, DialogSuspense, FormattedMessage as T } from 'components';
import withDialogRedux from 'components/DialogReduxConnect'; import withDialogRedux from 'components/DialogReduxConnect';
import { compose } from 'utils'; import { compose } from 'utils';
const TaskDialogContent = React.lazy(() => const TaskDialogContent = React.lazy(
import('./containers/TaskDialogContent'), () => import('./containers/TaskDialogContent'),
); );
/** /**
@@ -16,7 +17,7 @@ function TaskDialog({ dialogName, payload: { taskId = null }, isOpen }) {
return ( return (
<Dialog <Dialog
name={dialogName} name={dialogName}
title={'New Task'} title={intl.get('task.label.new_task')}
isOpen={isOpen} isOpen={isOpen}
autoFocus={true} autoFocus={true}
canEscapeKeyClose={true} canEscapeKeyClose={true}

View File

@@ -22,17 +22,17 @@ export const ActionsMenu = ({
<MenuDivider /> <MenuDivider />
<MenuItem <MenuItem
icon={<Icon icon="pen-18" />} icon={<Icon icon="pen-18" />}
text={'Edit Project'} text={intl.get('projects.action.edit_project')}
onClick={safeCallback(onEdit, original)} onClick={safeCallback(onEdit, original)}
/> />
<MenuItem <MenuItem
icon={<Icon icon="plus" />} icon={<Icon icon="plus" />}
text={'New Task'} text={intl.get('projects.action.new_task')}
onClick={safeCallback(onNewTask, original)} onClick={safeCallback(onNewTask, original)}
/> />
<MenuDivider /> <MenuDivider />
<MenuItem <MenuItem
text={'Delete Project'} text={intl.get('projects.action.delete_project')}
icon={<Icon icon="trash-16" iconSize={16} />} icon={<Icon icon="trash-16" iconSize={16} />}
intent={Intent.DANGER} intent={Intent.DANGER}
onClick={safeCallback(onDelete, original)} onClick={safeCallback(onDelete, original)}

View File

@@ -2044,5 +2044,20 @@
"expense.entries.remove_row": "Remove line", "expense.entries.remove_row": "Remove line",
"warehouse_transfer.entries.remove_row": "Remove line", "warehouse_transfer.entries.remove_row": "Remove line",
"item.details.inactive": "Inactive", "item.details.inactive": "Inactive",
"bill.validation.due_date": "{path} field must be later than {min}" "bill.validation.due_date": "{path} field must be later than {min}",
"sidebar.projects": "Projects",
"projects.action.edit_project": "Edit Project",
"projects.action.new_task": "New Task",
"projects.action.delete_project": "Delete Project",
"projects.label.new_project": "New Project",
"projects.label.contact": "Contact",
"projects.label.project_name": "Project Name",
"projects.label.deadline": "Deadline",
"projects.label.calculator_expenses": "Calculator from tasks & estimated expenses",
"projects.label.cost_estimate": "Cost Estimate",
"task.label.new_task": "New Task",
"task.label.task_name": "Task Name",
"task.label.estimated_hours": "Task Name",
"task.label.charge": "Charge",
"task.label.estimated_amount": "Estimated Amount"
} }

View File

@@ -974,7 +974,7 @@ export const getDashboardRoutes = () => [
component: lazy(() => component: lazy(() =>
import('../containers/Projects/containers/ProjectsList'), import('../containers/Projects/containers/ProjectsList'),
), ),
pageTitle: 'Projects', pageTitle: intl.get('sidebar.projects'),
}, },
// Homepage // Homepage
{ {