{"version":3,"sources":["components/FormBatches/FormView.jsx","containers/FormBatches/FormView.js"],"names":["TreeNode","_TreeSelect","Container","styled","div","_templateObject","_taggedTemplateLiteral","FormView","React","constructor","props","_this","super","this","state","getItemId","_this$state$item","_this$props$linkTarge","item","id","linkTargetRecord","formBatchId","find","Boolean","fetchItem","async","itemId","arguments","length","undefined","getCustomers","tenantIsFnl","getCustomersHierarchy","getCustomersList","responses","Promise","all","getItem","catch","error","_this$props$onCancel","_this$props","onCancel","call","resourceNotFound","newItem","getSettings","type","settingsType","getFormTemplates","cloneDeep","value","data","setState","fieldSettings","customers","get","formTemplates","showError","setItemValue","name","produce","draft","set","form","setFieldsValue","handleFileUpload","fileList","flatMap","each","districts","customerNames","CSV","Base64","decode","fileContents","map","filter","customerIds","one","strEqual","isEmpty","_message","concat","t","Set","fileUploadDrawerVisible","handleSubmit","createHandleSubmit","componentDidMount","render","_this$state$formTempl","_this$state$customers","_this$state$customers2","_jsx","_Spin","createLabel","createLabelFactory","createFieldDecorator","createFieldFactory","readOnly","isReadOnly","_jsxs","children","_Form","layout","colon","onSubmit","stopEvent","className","ValidationError","errors","validationErrors","Item","label","_Input","autoFocus","Select","onChange","placeholder","Option","getOptionProps","_Button","size","onClick","disabled","Icon","dropdownStyle","maxHeight","overflow","filterTreeNode","maxTagCount","treeCheckable","showSearch","allowClear","multiple","region","regionIndex","title","district","districtIndex","customer","displayName","mode","DatePicker","valuePropName","Checkbox","_Fragment","_Tooltip","htmlType","loading","saveAndCloseButtonLoading","Drawer","visible","onClose","FileUpload","accept","onUpload","extra","message","description","create","createFormViewContainer","actions","extraDispatchToProps","dispatch","params","customerActions","getOptions","getHierarchy","formTemplateActions","Component"],"mappings":"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","file":"static/js/29.9dfd1d46.chunk.js","sourcesContent":["import * as React from 'react'\r\nimport styled from 'styled-components'\r\nimport { Form, Input, Spin, Button, TreeSelect, Tooltip, message } from 'antd'\r\nimport { set, cloneDeep, isEmpty, get } from 'lodash'\r\nimport { Base64 } from 'js-base64'\r\nimport Select, { Option, getOptionProps } from 'elements/Select'\r\nimport DatePicker from 'elements/DatePicker'\r\nimport Checkbox from 'elements/Checkbox'\r\nimport Icon from 'elements/Icon'\r\nimport * as CSV from 'csv-string'\r\nimport produce from 'immer'\r\nimport { strEqual } from 'helpers/utils'\r\nimport { showError, resourceNotFound, ValidationError } from 'helpers/errors'\r\nimport { createLabelFactory, createFieldFactory, createHandleSubmit, isReadOnly } from 'helpers/formViews'\r\nimport { t } from 'helpers/i18n'\r\nimport { filterTreeNode } from 'helpers/trees'\r\nimport { stopEvent } from 'helpers/events'\r\nimport FileUpload from 'elements/FileUpload'\r\nimport Drawer from 'elements/Drawer'\r\n\r\nconst { TreeNode } = TreeSelect\r\n\r\nconst Container = styled.div`\r\n .ant-select-disabled .ant-select-selection {\r\n background-color: white !important;\r\n }\r\n\r\n .ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice {\r\n color: #666 !important;\r\n background-color: #fafafa !important;\r\n }\r\n`\r\n\r\nclass FormView extends React.Component {\r\n state = {}\r\n\r\n constructor(props) {\r\n super(props)\r\n\r\n this.handleSubmit = createHandleSubmit(this)\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchItem()\r\n }\r\n\r\n getItemId = () => [this.state.item?.id, this.props.linkTargetRecord?.formBatchId].find(Boolean)\r\n\r\n fetchItem = async ({ itemId = this.getItemId() } = {}) => {\r\n const getCustomers = this.props.tenantIsFnl\r\n ? this.props.getCustomersHierarchy\r\n : this.props.getCustomersList\r\n\r\n try {\r\n const responses = await Promise.all([\r\n itemId\r\n ? this.props.getItem(itemId).catch((error) => {\r\n this.props.onCancel?.()\r\n throw error\r\n })\r\n : !this.props.linkTargetRecord\r\n ? this.props.newItem({})\r\n : resourceNotFound(this),\r\n this.props.getSettings({ type: this.props.settingsType }),\r\n getCustomers(),\r\n this.props.getFormTemplates(),\r\n ])\r\n\r\n const item = cloneDeep(responses[0].value.data)\r\n\r\n this.setState({\r\n item,\r\n fieldSettings: responses[1].value.data.fieldSettings,\r\n customers: get(responses[2], 'value.data.items', []),\r\n formTemplates: get(responses[3], 'value.data.items', []),\r\n })\r\n } catch (error) {\r\n showError({ error })\r\n }\r\n }\r\n\r\n setItemValue = (name, value) =>\r\n this.setState(\r\n produce((draft) => {\r\n set(draft.item, name, value)\r\n\r\n this.props.form.setFieldsValue({ [name]: value })\r\n })\r\n )\r\n\r\n handleFileUpload = (fileList = []) => {\r\n if (fileList[0]) {\r\n const customers = this.state.customers\r\n .flatMap((each) => each.districts)\r\n .flatMap((each) => each.customers)\r\n const customerNames = CSV.parse(Base64.decode(fileList[0].fileContents))\r\n .map((each) => each[0])\r\n .filter(Boolean)\r\n const customerIds = customerNames\r\n .map((each) => customers.find((one) => strEqual(one.name, each)))\r\n .filter(Boolean)\r\n .map((each) => each.id)\r\n const type =\r\n !isEmpty(customerNames) || isEmpty(customerIds)\r\n ? 'error'\r\n : customerIds.length < customerNames.length\r\n ? 'warn'\r\n : 'success'\r\n\r\n message[type](`${customerIds.length} ${t('of')} ${customerNames.length} ${t('itemsAdded')}`)\r\n\r\n this.setItemValue('customerIds', [...new Set(customerIds)])\r\n this.setState({ fileUploadDrawerVisible: false })\r\n }\r\n }\r\n\r\n render() {\r\n const { item, fieldSettings } = this.state\r\n\r\n if (!item || !fieldSettings) {\r\n return \r\n }\r\n\r\n const createLabel = createLabelFactory(fieldSettings)\r\n const createFieldDecorator = createFieldFactory(this.props.form, item, fieldSettings)\r\n\r\n const readOnly = isReadOnly(this) || Boolean(item.id)\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n \r\n {createFieldDecorator('name')()}\r\n \r\n \r\n {createFieldDecorator('templateId')(\r\n this.setItemValue('templateId', value)}\r\n placeholder={t('none')}\r\n readOnly={readOnly}\r\n >\r\n {(this.state.formTemplates ?? []).map((each) => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n {this.props.tenantIsFnl ? (\r\n \r\n
\r\n this.setState({ fileUploadDrawerVisible: true })}\r\n disabled={readOnly}\r\n >\r\n \r\n \r\n
\r\n {createFieldDecorator('customerIds')(\r\n this.setItemValue('customerIds', value)}\r\n dropdownStyle={{ maxHeight: '240px', overflow: 'auto' }}\r\n placeholder={t('none')}\r\n filterTreeNode={filterTreeNode}\r\n disabled={readOnly}\r\n maxTagCount={!readOnly ? 20 : undefined}\r\n treeCheckable\r\n showSearch\r\n allowClear\r\n multiple\r\n >\r\n {(this.state.customers ?? []).map((region, regionIndex) => (\r\n \r\n {region.districts.map((district, districtIndex) => (\r\n \r\n {district.customers.map((customer) => (\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n )}\r\n
\r\n ) : (\r\n \r\n {createFieldDecorator('customerIds')(\r\n this.setItemValue('customerIds', value)}\r\n placeholder={t('none')}\r\n readOnly={readOnly}\r\n mode=\"multiple\"\r\n allowClear\r\n >\r\n {(this.state.customers ?? []).map((each) => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n )}\r\n \r\n {createFieldDecorator('dueDate')()}\r\n \r\n \r\n {createFieldDecorator('required', { valuePropName: 'checked' })(\r\n {createLabel('required')}\r\n )}\r\n \r\n
\r\n
\r\n {readOnly ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n {' '}\r\n \r\n \r\n )}\r\n
\r\n
\r\n this.setState({ fileUploadDrawerVisible: false })}\r\n >\r\n this.setState({ fileUploadDrawerVisible: false })}\r\n extra={{\r\n type: 'info',\r\n message: t('fileRequirements'),\r\n description: t('formBatchesUploadInfo'),\r\n }}\r\n />\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default Form.create()(FormView)\r\n","import actions from 'actions/formBatches'\r\nimport customerActions from 'actions/customers'\r\nimport formTemplateActions from 'actions/formTemplates'\r\nimport { createFormViewContainer } from 'factories/FormView'\r\nimport Component from 'components/FormBatches/FormView'\r\n\r\nexport default createFormViewContainer({\r\n actions,\r\n extraDispatchToProps: (dispatch, props) => ({\r\n getCustomersList: (params) => dispatch(customerActions.getOptions(params)),\r\n getCustomersHierarchy: (params) => dispatch(customerActions.getHierarchy(params)),\r\n getFormTemplates: (params) => dispatch(formTemplateActions.getOptions(params)),\r\n }),\r\n})(Component)\r\n"],"sourceRoot":""}