Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.79 KB | None | 0 0
  1. <Route path="/reports/daily-sales-single/:date_from" component={DailySalesSingle} />
  2.  
  3. import * as React from 'react';
  4. import {
  5. BrowserRouter as Router,
  6. Route,
  7. Switch,
  8. } from 'react-router-dom';
  9. import { asyncComponent } from '@hoc/index';
  10. import { useSpring, useTransition, animated } from 'react-spring';
  11. import useRouter from '@hooks/useRouter';
  12.  
  13. import Error from '@containers/Error/index';
  14.  
  15. const Home = asyncComponent(() => import(/* webpackChunkName: "js/chunks/home" */ '@containers/home').then(
  16. module => module.default,
  17. ));
  18.  
  19. const RatesOverview = asyncComponent(() => import(/* webpackChunkName: "js/chunks/ratesoverview" */ '@containers/RatesOverview').then(
  20. module => module.default,
  21. ));
  22.  
  23. const CreateRate = asyncComponent(() => import(/* webpackChunkName: "js/chunks/createrates" */ '@containers/CreateRates').then(
  24. module => module.default,
  25. ));
  26.  
  27. const CopyRate = asyncComponent(() => import(/* webpackChunkName: "js/chunks/createrates" */ '@containers/CreateRates/copyRate').then(
  28. module => module.default,
  29. ));
  30.  
  31. const RateHurdleOverview = asyncComponent(() => import(/* webpackChunkName: "js/chunks/hurdleOverview" */ '@containers/RateHurdleOverview').then(
  32. module => module.default,
  33. ));
  34.  
  35. const DailySalesSingle = asyncComponent(() => import(/* webpackChunkName: "js/chunks/dailysalessingle" */ '@containers/Reports/DailySalesSingle').then(
  36. module => module.default,
  37. ));
  38.  
  39. const DailySalesGroup = asyncComponent(() => import(/* webpackChunkName: "js/chunks/dailysalesgroup" */ '@containers/Reports/DailySalesGroup').then(
  40. module => module.default,
  41. ));
  42.  
  43. const WeeklySalesSingle = asyncComponent(() => import(/* webpackChunkName: "js/chunks/weeklysalessingle" */ '@containers/Reports/WeeklySalesSingle').then(
  44. module => module.default,
  45. ));
  46.  
  47. const WeeklySalesGroup = asyncComponent(() => import(/* webpackChunkName: "js/chunks/weeklysalesgroup" */ '@containers/Reports/WeeklySalesGroup').then(
  48. module => module.default,
  49. ));
  50.  
  51. const Settings = asyncComponent(() => import(/* webpackChunkName: "js/chunks/settings" */ '@containers/Settings').then(
  52. module => module.default,
  53. ));
  54.  
  55. const CreateRateHurdle = asyncComponent(() => import(/* webpackChunkName: "js/chunks/hurdlecreaterate" */ '@components/Forms/CreateRateHurdle').then(
  56. module => module.default,
  57. ));
  58.  
  59. const RatesGrid = asyncComponent(() => import(/* webpackChunkName: "js/chunks/ratesgrid" */ '@containers/RatesGrid').then(
  60. module => module.default,
  61. ));
  62.  
  63. const GroupDasboard = asyncComponent(() => import(/* webpackChunkName: "js/chunks/groupdashboard" */ '@containers/Group/Dashboard').then(
  64. module => module.default,
  65. ));
  66.  
  67. const Routes = () => {
  68. /* eslint-disable no-shadow */
  69. const { location } = useRouter();
  70. const transitions = useTransition(location, location => location.pathname, {
  71. from: {
  72. opacity: 0,
  73. position: 'absolute',
  74. width: '100%',
  75. transform: 'translate3d(-100%, 0, 0)',
  76. },
  77. enter: {
  78. opacity: 1,
  79. transform: 'translate3d(0, 0, 0,)',
  80. },
  81. leave: { opacity: 0, transform: 'translate3d(150%, 0, 0)' },
  82. });
  83. /* eslint-enable no-shadow */
  84. return transitions.map(({ item, key, props }) => (
  85. <>
  86. <div className="app-page">
  87. <animated.div className="app-content" key={key} style={props}>
  88. <Error />
  89. <Switch location={item}>
  90. <Route exact path="/" component={GroupDasboard} />
  91. <Route path="/rates/overview" component={RatesOverview} />
  92. <Route path="/rates/create" component={CreateRate} />
  93. <Route path="/rates/grid" component={RatesGrid} />
  94. <Route path="/rates/copy/:rate_id" component={CopyRate} />
  95. <Route path="/rates/hurdle/create" component={CreateRateHurdle} />
  96. <Route path="/rates/hurdle" component={RateHurdleOverview} />
  97. <Route path="/reports/daily-sales-single/:date_from" component={DailySalesSingle} />
  98. <Route path="/reports/daily-sales-group" component={DailySalesGroup} />
  99. <Route path="/group/dashboard" component={GroupDasboard} />
  100. <Route path="/reports/weekly-sales-single" component={WeeklySalesSingle} />
  101. <Route path="/reports/weekly-sales-group" component={WeeklySalesGroup} />
  102. { /* <Route path="/settings" component={Settings} /> */}
  103. </Switch>
  104. </animated.div>
  105. </div>
  106. </>
  107. ));
  108. };
  109.  
  110. export default Routes;
  111.  
  112. import * as React from 'react';
  113. import { connect } from 'react-redux';
  114. import * as actions from '@actions/index';
  115.  
  116. import { QuickSearchMenu, WeeklyQuickSearchMenu } from '@constants/DateLists';
  117. import { SearchBarDatesSchema } from '@constants/Yup/SearchBarDatesSchema.ts';
  118.  
  119. import { ToggleWithLabel } from '@components/inputs/index';
  120. import PageHeader from '@components/Header/PageHeader';
  121.  
  122. import {
  123. Jumbotron,
  124. Container,
  125. Row,
  126. } from 'react-bootstrap';
  127.  
  128. import {
  129. Formik,
  130. Form,
  131. Field,
  132. } from 'formik';
  133.  
  134. import { log } from 'util';
  135.  
  136. import Title from './Title';
  137. import SearchBy from './SearchBy';
  138. import QuickSearch from './QuickSearch';
  139. import Dates from './Dates';
  140. import Properties from './Properties';
  141. import DepartmentToggle from './DepartmentToggle';
  142. import DepartmentTitle from './DepartmentTitle';
  143. import RunReport from './RunReport';
  144. import AdvSearch from './AdvSearch';
  145. import AdvSearchToggle from './AdvSearchToggle';
  146. import Options from './Options';
  147.  
  148. interface StateProps {
  149. isModalOpen: boolean;
  150. isSidebarOpen: boolean;
  151. }
  152.  
  153. interface InitialProps {
  154. page: any;
  155. title: any;
  156. subTitle: string;
  157. dataLocal: any;
  158. type: string;
  159. }
  160.  
  161. interface DispatchProps {
  162. getAllDepartments: (payload: any) => void;
  163. getAllPaymentMethods: (payload: any) => void;
  164. }
  165.  
  166. type Props = InitialProps & StateProps & DispatchProps;
  167.  
  168. function mapDispatchToProps(dispatch: React.Dispatch<any>): DispatchProps {
  169. return {
  170. getAllDepartments: payload => dispatch(actions.Reports.getAllDepartments(payload)),
  171. getAllPaymentMethods: payload => dispatch(actions.Reports.getAllPaymentMethods(payload)),
  172. };
  173. }
  174.  
  175. const Header = ({
  176. page,
  177. title,
  178. subTitle,
  179. dataLocal,
  180. getAllDepartments,
  181. getAllPaymentMethods,
  182. type,
  183. }: Props) => {
  184. const [department, setDepartment] = React.useState({ status: true });
  185. const [advSearch, setAdvSearch] = React.useState({ status: false });
  186. const [quickSearchDates, setQuickSearchDates] = React.useState({
  187. dateName: null,
  188. fromDate: null,
  189. toDate: null,
  190. });
  191. const [apiDates, setApiDates] = React.useState({
  192. fromDate: null,
  193. toDate: null,
  194. });
  195.  
  196. const [netOrGross, setNetOrGross] = React.useState(true);
  197.  
  198. const updateQuickSearchDates = () => {
  199. if (apiDates.fromDate === null && apiDates.toDate === null) {
  200. const today = new Date();
  201. setQuickSearchDates({
  202. dateName: 'Today',
  203. fromDate: today,
  204. toDate: today,
  205. });
  206. }
  207. };
  208.  
  209. const getQuickSearchMenu = () => ((
  210. page === 'weekly-sales-single'
  211. || page === 'weekly-sales-group')
  212. ? WeeklyQuickSearchMenu
  213. : QuickSearchMenu);
  214.  
  215. const disableComponent = () => ((
  216. page === 'weekly-sales-single'
  217. || page === 'weekly-sales-group')
  218. // eslint-disable-next-line
  219. ? true
  220. : false);
  221.  
  222. const onChange = (e: MouseEvent | KeyboardEvent) => {
  223. setNetOrGross(e.target.value);
  224. };
  225.  
  226. return (
  227. <div className="daily-sales-header">
  228. <PageHeader title={title} helpPage="help">
  229. <Container fluid>
  230. <Formik
  231. validateOnChange
  232. initialValues={{}}
  233. validationSchema={SearchBarDatesSchema}
  234. onSubmit={(values, { setSubmitting }) => {
  235. updateQuickSearchDates();
  236. getAllPaymentMethods({
  237. type,
  238. apiDates,
  239. });
  240. getAllDepartments({
  241. type,
  242. department,
  243. apiDates,
  244. });
  245. setSubmitting(false);
  246. }}
  247. >
  248. {({
  249. isSubmitting,
  250. handleSubmit,
  251. }) => (
  252. <Form onSubmit={handleSubmit}>
  253. <Row>
  254. {/* { page === 'daily-sale-single' && (
  255. <SearchBy
  256. colClass="search-by-col"
  257. buttonId="search-by-button"
  258. buttonLabel="Search by"
  259. />
  260. )} */}
  261. <QuickSearch
  262. buttonLabel="Quick Search"
  263. eleClass="quick-search"
  264. eleIdBtn="quick-search-button"
  265. quickSearchMenu={getQuickSearchMenu()}
  266. setQuickSearchDates={setQuickSearchDates}
  267. getQuickSearchDates={quickSearchDates}
  268. disable={disableComponent()}
  269. />
  270. <Field
  271. fromClass="from-date"
  272. fromLabel="From"
  273. toClass="to-date"
  274. toLabel="To"
  275. setQuickSearchDates={quickSearchDates}
  276. setApiDates={setApiDates}
  277. component={Dates}
  278. disable={disableComponent()}
  279. />
  280. { page === 'daily-sale-groups' && (
  281. <Properties
  282. colClass="search-by-col"
  283. buttonId="search-by-button"
  284. buttonLabel="Properties"
  285. />
  286. )}
  287. { (page === 'daily-sale-single'
  288. || page === 'weekly-sales-single'
  289. || page === 'weekly-sales-group') && (
  290. <DepartmentToggle
  291. buttonOneLabel="Department"
  292. buttonTwoLabel="Sub-Department"
  293. variantSelected="primary"
  294. variantUnSelected="outline-primary"
  295. setDepartment={setDepartment}
  296. status={department.status}
  297. isSubmitting={isSubmitting}
  298. disable={disableComponent()}
  299. />
  300. )}
  301. <RunReport
  302. buttonLabel="Run Report"
  303. isSubmitting={isSubmitting}
  304. departmentToggle={department.status}
  305. disable={disableComponent()}
  306. />
  307. </Row>
  308. <AdvSearch
  309. advSearchToggle={advSearch.status}
  310. />
  311. <Row>
  312. <AdvSearchToggle
  313. buttonClass="adv-search-btn pull-right"
  314. buttonLabel="Advanced Search"
  315. setAdvSearch={setAdvSearch}
  316. status={advSearch.status}
  317. />
  318. </Row>
  319. </Form>
  320. )}
  321. </Formik>
  322. </Container>
  323. <Row>
  324. <DepartmentTitle
  325. title="Department"
  326. departmentToggle={department.status}
  327. departmentClass="display-title"
  328. />
  329. <div className="col-md-auto">
  330. { (page === 'weekly-sales-single'
  331. || page === 'weekly-sales-group') && (
  332. <div className="col-md-auto">
  333. <ToggleWithLabel
  334. label="Net / Gross"
  335. field={{
  336. onChange,
  337. value: netOrGross,
  338. name: 'net_or_gross',
  339. }}
  340. />
  341. </div>
  342. )}
  343. </div>
  344. <Options
  345. data={dataLocal}
  346. />
  347. </Row>
  348. </PageHeader>
  349. </div>
  350. );
  351. };
  352.  
  353. export default connect(null, mapDispatchToProps)(Header);
  354.  
  355. <Route path="/reports/daily-sales-single/:from?/:to?" component={DailySalesSingle} />
  356.  
  357. interface RouterProps {
  358. match: any;
  359. }
  360.  
  361. type Props = RouterProps;
  362.  
  363. const functionalComponent = ({
  364. match,
  365. }: Props) => {
  366. console.log(match.params);
  367. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement