Advertisement
danine1

Fragment 2 - EmployeeDetails

Mar 12th, 2018
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React from "react";
  2. import propTypes from "prop-types";
  3. import { Switch, Route, Redirect } from "react-router-dom";
  4. import { createFragmentContainer, graphql } from "react-relay";
  5. import RouteBasicInformation from "../pages/BasicInformation";
  6. import RoutePayroll from "../pages/Payroll";
  7. import RouteDocuments from "../pages/Documents";
  8. import RouteNotes from "../pages/Notes";
  9. import RouteReviews from "../pages/Reviews";
  10.  
  11. // local components
  12. import EmployeeMenu from "../EmployeeMenu";
  13. import EmployeeHeaderContainer from "./EmployeeHeader";
  14.  
  15. import cls from "../employeeDetails.scss";
  16.  
  17. class EmployeeDetailsContainer extends React.PureComponent {
  18.   static propTypes = {
  19.     match: propTypes.instanceOf(Object).isRequired,
  20.     location: propTypes.instanceOf(Object).isRequired,
  21.     employeeData: propTypes.instanceOf(Object).isRequired,
  22.   };
  23.  
  24.   render() {
  25.     const {
  26.       match: { params: { id: urlEmployeeId } },
  27.       location: { pathname },
  28.       employeeData: { getEmployee },
  29.     } = this.props;
  30.     const rootRoute = "/people/employees/:id";
  31.     const rootLinkRoute = `/people/employees/${urlEmployeeId}`;
  32.     return (
  33.       <React.Fragment>
  34.         <div className={cls.pageEmployeeDetail}>
  35.           <EmployeeMenu
  36.             currentLocation={pathname}
  37.             rootLinkRoute={rootLinkRoute}
  38.           />
  39.           <div className={cls.employeeContent}>
  40.             <EmployeeHeaderContainer employeeHeader={getEmployee} />
  41.             <div className={cls.employeeContentScroll}>
  42.               <Switch>
  43.                 <Route
  44.                   path={`${rootRoute}/basic_information`}
  45.                   component={RouteBasicInformation}
  46.                 />
  47.                 <Route path={`${rootRoute}/payroll`} component={RoutePayroll} />
  48.                 <Route path={`${rootRoute}/reviews`} component={RouteReviews} />
  49.                 <Route path={`${rootRoute}/notes`} component={RouteNotes} />
  50.                 <Route
  51.                   path={`${rootRoute}/documents_education`}
  52.                   component={RouteDocuments}
  53.                 />
  54.                 {/* default to basic information */}
  55.                 <Route
  56.                   component={() => (
  57.                     <Redirect to={`${rootLinkRoute}/basic_information`} />
  58.                   )}
  59.                 />
  60.               </Switch>
  61.             </div>
  62.           </div>
  63.         </div>
  64.       </React.Fragment>
  65.     );
  66.   }
  67. }
  68.  
  69. export default createFragmentContainer(
  70.   EmployeeDetailsContainer,
  71.   graphql`
  72.     fragment EmployeeDetails_employeeData on Query
  73.       @argumentDefinitions(globalId: { type: "String!" }) {
  74.       getEmployee(globalId: $globalId) {
  75.         ...EmployeeHeader_employeeHeader
  76.       }
  77.     }
  78.   `,
  79. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement