Advertisement
Guest User

Untitled

a guest
Jan 31st, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { Component } from 'react';
  2. import {Col, Row} from 'react-bootstrap';
  3. import {HashRouter, Route, Switch} from 'react-router-dom';
  4. import Header from './Header';
  5. import Footer from './Footer';
  6. import Sidebar from './Sidebar';
  7. import Summary from '../pages/Summary';
  8. import SummaryTransactions from '../pages/SummaryTransactions';
  9. import Transactions from '../pages/Transactions';
  10. import Requests from '../pages/Requests';
  11. import Invoices from '../pages/Invoices';
  12. import Help from '../pages/Help';
  13. import Login from '../pages/Login';
  14. import Register from '../pages/Register';
  15. import Payments from '../pages/Payments';
  16. import Recharges from '../pages/Recharges';
  17. import Retreats from '../pages/Retreats';
  18. import Profile from '../pages/Profile';
  19. import Directory from '../pages/Directory';
  20. import Accounts from '../pages/Accounts';
  21. import AccountAffiliation from '../pages/AccountAffiliation';
  22. import RequestPayment from '../pages/RequestPayment';
  23. import SendPayment from '../pages/SendPayment';
  24. import RequestRetreats from '../pages/RequestRetreats';
  25. import RequestRecharges from '../pages/RequestRecharges';
  26. import Test from '../pages/Test';
  27.  
  28.  
  29. import "../styles/components/App.css";
  30. import "../styles/index.css";
  31.  
  32. const App = () => (
  33.     <HashRouter>
  34.         <div>
  35.             <Row>
  36.                 <Header/>
  37.             </Row>
  38.             <Row style={{marginTop: '4em'}}>
  39.                 <Col md={2} xs={12}>
  40.                     <Sidebar/>
  41.                 </Col>
  42.                 <Col md={10} xs={12}>
  43.                     <Switch>
  44.                         <Route exact path="/" component={Summary}/>
  45.                         <Route exact path="/login" component={Login}/>
  46.                         <Route exact path="/registro" component={Register}/>
  47.                         <Route exact path="/resumen" component={Summary}/>
  48.                         <Route exact path="/resumen-transacciones" component={SummaryTransactions}/>
  49.                         <Route exact path="/pagos" component={Payments}/>
  50.                         <Route exact path="/recargas" component={Recharges}/>
  51.                         <Route exact path="/retiros" component={Retreats}/>
  52.                         <Route exact path="/transacciones" component={Transactions}/>
  53.                         <Route exact path="/solicitudes" component={Requests}/>
  54.                         <Route exact path="/facturas" component={Invoices}/>
  55.                         <Route exact path="/ayuda" component={Help}/>
  56.                         <Route exact path="/perfil" component={Profile}/>
  57.                         <Route exact path="/directorio" component={Directory}/>
  58.                         <Route exact path="/cuentas" component={Accounts}/>
  59.                         <Route exact path="/afiliacion-cuenta" component={AccountAffiliation}/>
  60.                         <Route exact path="/solicitar-pago" component={RequestPayment}/>
  61.                         <Route exact path="/enviar-pago" component={SendPayment}/>
  62.                         <Route exact path="/solicitar-retiro" component={RequestRetreats}/>
  63.                         <Route exact path="/solicitar-recarga" component={RequestRecharges}/>
  64.                         <Route exact path="/test" component={Test}/>
  65.                         <Route render={() => <div className="content-page"><span>404</span></div>}/>
  66.                     </Switch>
  67.                 </Col>
  68.             </Row>
  69.             <Row>
  70.                 <Footer/>
  71.             </Row>
  72.         </div>
  73.     </HashRouter>
  74. );
  75.  
  76. export default App;
  77. ----------------------------------------------------------------------------------------------------
  78.  
  79. import React from 'react';
  80. import {Well, Button} from 'react-bootstrap';
  81. import * as classnames from 'classnames';
  82.  
  83. /*Card de acciones, recibe:
  84. text: un título
  85. nameClass= una clase
  86. contents = un arreglo de contenidos
  87. */
  88.  
  89. const Card = ({ text = null, contents = [], className = '', ...props }) => {
  90.     return [
  91.         <Well {...props} className={classnames("card", className)}>
  92.             { text && <p className="card-title">{text}</p> }
  93.             {contents}
  94.         </Well>
  95.     ];
  96. };
  97.  
  98. export default Card;
  99.  
  100. ----------------------------------------------------------------------------------------------------
  101.  
  102.  
  103. import React from 'react';
  104. import {Well, Table, ButtonGroup, Button, DropdownButton, Modal, NavDropdown, MenuItem} from 'react-bootstrap';
  105. import FontAwesome from 'react-fontawesome';
  106. import ModalDetails from './ModalDetails';
  107.  
  108. /*
  109. TableAdmin:
  110. buttons = un arreglo de botones que tienen que pueden ser icons o dropdowns, tienen un texto, un icono y una acción
  111. headers = un arregloque contiene las cabeceras de la tabla
  112. nameClass= una clase
  113. contents = un arreglo de contenidos
  114.  
  115. ObjectRow:
  116. rows: un arreglo que contiene los campos de una fila
  117. icons: un arreglo que contiene los iconos de una fila, se transforman en un elemento     button que accede a los datos de su fila
  118.  
  119. */
  120.  
  121. const ObjectRow = ({  idField='id', fields = [],  item = {} , buttons = []}) => {
  122.     const botones = buttons.filter( btn => !btn.dropdown);
  123.     const dropdowns = buttons.filter( btn => btn.dropdown);
  124.     return (
  125.         <tr>   
  126.             {fields.map((field, i) => <td key={`field${i}`}>{item[field]}</td>)}
  127.             <td>
  128.             <ButtonGroup>
  129.                 { botones.map((btn, i) => (
  130.                     <Button onClick={ () => btn.action( item ) }>
  131.                         { btn.icon && <FontAwesome name={btn.icon}  />}
  132.                         {btn.text && `${btn.text}`}
  133.                     </Button>
  134.                     )
  135.                 ) }
  136.                 {
  137.                     dropdowns.length ? (
  138.                         <DropdownButton pullRight className="select" noCaret title={<FontAwesome name={'ellipsis-h'}/>}>
  139.                         {
  140.                             dropdowns.map((option, i) => <MenuItem key={`option${i}`} onClick={() => option.action( item )   }><FontAwesome name={option.icon}/>{option.text}</MenuItem>)
  141.                          }
  142.                         </DropdownButton>
  143.                     ) : null
  144.                 }
  145.                 </ButtonGroup>
  146.             </td>
  147.         </tr>
  148.     );
  149. };
  150. /*
  151. buttons = [
  152.     {
  153.         icon,
  154.         text,
  155.         classname,
  156.         action,
  157.         dropdown: true|false
  158.     }
  159. ]
  160. */
  161. const TableAdmin = ({ idField='id', fields = [], headers = [], buttons = [], nameClass, contents = []}) => {
  162.     return (<Table responsive striped className={nameClass}>
  163.                 <thead>
  164.                     <tr>
  165.                         { headers.map((header, i) => <th key={`header${i}`}> {header} </th>) }
  166.                     </tr>
  167.                 </thead>
  168.                 <tbody>
  169.                     {
  170.                         contents.map((content, i) => <ObjectRow idField={idField} fields={fields} item={content} buttons={buttons} /> )
  171.                     }
  172.                 </tbody>
  173.             </Table>
  174.     );
  175. };
  176.  
  177. export default TableAdmin;
  178.  
  179.  
  180. ----------------------------------------------------------------------------------------------------
  181.  
  182. import React from 'react';
  183. import FontAwesome from 'react-fontawesome';
  184. import {Nav, NavItem, Button, Tooltip, OverlayTrigger} from 'react-bootstrap';
  185. import LinkItem from "./LinkItem";
  186.  
  187.  
  188. export default class Sidebar extends React.Component {
  189.  
  190.     render = () => {
  191.         const send = (
  192.             <Tooltip placement="top" id="send" className="hidden-lg">
  193.                 <strong>Enviar dinero</strong>
  194.             </Tooltip>
  195.         );
  196.         const request = (
  197.             <Tooltip placement="top" id="request"  className="hidden-lg">
  198.                 <strong>Solicitar pago</strong>
  199.             </Tooltip>
  200.         );
  201.         const reload = (
  202.             <Tooltip placement="top" id="reload"  className="hidden-lg">
  203.                 <strong>Recargar</strong>
  204.             </Tooltip>
  205.         );
  206.         const retire = (
  207.             <Tooltip placement="top" id="retire"  className="hidden-lg">
  208.                 <strong>Retirar</strong>
  209.             </Tooltip>
  210.         );
  211.         return (
  212.             <div className="sidebar">
  213.                 <div className="sidebar-title hidden-xs hidden-sm">
  214.                     <span>
  215.                         Elige una acción
  216.                     </span>
  217.                     <FontAwesome
  218.                         name='angle-down'
  219.                         size='1x'
  220.                     />
  221.                 </div>
  222.  
  223.                 <Nav bsStyle="pills" stacked className="sidebar-menu col-xs-12 col-sm-6 col-sm-offset-3 col-md-10 col-md-offset-2">
  224.  
  225.                     <OverlayTrigger placement="top" overlay={send}>
  226.                         <NavItem className="send-money col-xs-4 col-md-12">
  227.                             <LinkItem extraClase="link" texto={<i>&#xe808;</i>} link="/enviar-pago"/>
  228.                         </NavItem>
  229.                     </OverlayTrigger>
  230.  
  231.                     <OverlayTrigger placement="top" overlay={request}> 
  232.                         <NavItem className="request-money col-xs-4 col-md-12">
  233.                             <LinkItem extraClase="link" texto={<i>&#xe811;</i>} link="/solicitar-pago"/>
  234.                         </NavItem>
  235.                     </OverlayTrigger>
  236.  
  237.                     <OverlayTrigger placement="top" overlay={reload}>  
  238.                         <NavItem className="reload-money col-xs-4 col-md-12">
  239.                             <LinkItem extraClase="link" texto={<i>&#xe80c;</i>} link="/solicitar-recarga"/>
  240.                         </NavItem>
  241.                     </OverlayTrigger>
  242.  
  243.                     <OverlayTrigger placement="top" overlay={retire}>  
  244.                         <NavItem className="retire-money col-xs-4 col-md-12">
  245.                             <LinkItem extraClase="link" texto={<i>&#xe80e;</i>} link="/solicitar-retiro"/>
  246.                         </NavItem>
  247.                     </OverlayTrigger>
  248.  
  249.                 </Nav>
  250.  
  251.                 <div className="divider hidden-xs hidden-sm col-md-4 col-md-offset-4"></div>
  252.  
  253.                 <Nav bsStyle="pills" stacked className="sidebar-help hidden-sm hidden-xs col-md-10 col-md-offset-0">
  254.                     <p className="title-help">Información adicional</p>
  255.                     <NavItem className="items-help">
  256.                         <FontAwesome
  257.                             className="circle-items-help"
  258.                             name='circle'
  259.                             size='1x'
  260.                         />
  261.                         <span>  ¿Cómo recibir pagos?  </span>
  262.                     </NavItem>
  263.                     <NavItem className="items-help">
  264.                         <FontAwesome
  265.                             className="circle-items-help"
  266.                             name='circle'
  267.                             size='1x'
  268.                         />
  269.                         <span>  Tarifas y comisiones  </span>
  270.                     </NavItem>
  271.                     <NavItem className="items-help">
  272.                         <FontAwesome
  273.                             className="circle-items-help"
  274.                             name='circle'
  275.                             size='1x'
  276.                         />
  277.                         <span>  Preguntas frecuentes  </span>
  278.                     </NavItem>
  279.                 </Nav>
  280.             </div>
  281.         )
  282.     };
  283.   }
  284.  
  285.  
  286.  
  287. ----------------------------------------------------------------------------------------------------
  288.  
  289.  
  290.  
  291. import React from 'react';
  292. import {Modal, Button, ButtonGroup} from 'react-bootstrap';
  293.  
  294. /*Componente Modal
  295. Recibe un arreglo de contenidos y uno de botones
  296. */
  297.  
  298. export  default class ModalDetails extends  React.Component {
  299.  
  300.     state = {
  301.         showModal: true,
  302.     };
  303.  
  304.     changeState = () => {
  305.         this.setState({showModal: false})
  306.     }
  307.  
  308.     render() {
  309.         const {header  = [] }= this.props;
  310.         const {elements  = [] }= this.props;
  311.         const {buttons  = [] }= this.props;
  312.         const {nameClass }= this.props;
  313.         const { showModal } = this.state;
  314.  
  315.         return (
  316.            <Modal key show={showModal} className={nameClass} >
  317.            <Modal.Header>{header}</Modal.Header>
  318.             <Modal.Body>{elements}</Modal.Body>
  319.             <Modal.Footer>
  320.                 <ButtonGroup>
  321.                     { buttons.map((btn, i) => (
  322.                         <Button className={btn.className} onClick={ () => btn.action() }>
  323.                             {btn.text && `${btn.text}`}
  324.                         </Button>
  325.                         )
  326.                     ) }
  327.                 </ButtonGroup>
  328.             </Modal.Footer>
  329.         </Modal>
  330.         )
  331.     }
  332. };
  333.  
  334.  
  335. ----------------------------------------------------------------------------------------------------
  336.  
  337.  
  338. import React from 'react';
  339. import {Modal,Col, Row, Well, Button, Tabs, Tab} from 'react-bootstrap';
  340. import Card from '../components/Card';
  341. import AvailableBalance from '../components/AvailableBalance';
  342. import ModalDetails from '../components/ModalDetails';
  343. import RechargesCreditCard from '../components/RechargesCreditCard';
  344. import RechargesTransfer from '../components/RechargesTransfer';
  345.  
  346.  
  347. /*sección de solicitud de recarga*/
  348.  
  349. export default class RequestRecharges extends React.Component {
  350.  
  351.     render = ( ) => {
  352.  
  353.         return [
  354.             <Col lg={9} md={12} xs={12} key={"summarycol1"}>
  355.                 <Card className="request-recharges-card" text={'Hacer recargas'}
  356.                         contents={[
  357.                             <Tabs defaultActiveKey={1} className="recharges-tabs">
  358.                                 <Tab eventKey={1} title="TDC">
  359.                                     <RechargesCreditCard />
  360.                                 </Tab>
  361.                                 <Tab eventKey={2} title="Transferencia">
  362.                                     <RechargesTransfer />
  363.                                 </Tab>
  364.                             </Tabs>
  365.                         ]}
  366.                     />
  367.             </Col>,
  368.  
  369.             <Col lg={3} md={12} xs={12} key={"summarycol2"}>
  370.                 <Card text={'Saldo'} className="card-available" contents={[<AvailableBalance/>]} />
  371.                 <Card className="card-last-recharges" text={"Últimas recargas"}
  372.                     contents={[
  373.                         <Button className={'button-recharges'}>Ver todas</Button>
  374.                     ]} />
  375.                 <Card className="request-recharges-actions" text={"Acciones"}
  376.                     contents={[
  377.                         <Button className={'recharges-actions'}>Ver recargas</Button>
  378.                     ]} />
  379.             </Col>
  380.         ]
  381.     };
  382. }
  383. ----------------------------------------------------------------------------------------------------
  384.  
  385.  
  386. import React from 'react';
  387. import {Modal,Col, Row, Well, Button} from 'react-bootstrap';
  388. import Card from '../components/Card';
  389. import TableAdmin from '../components/TableAdmin';
  390. import ModalDetails from '../components/ModalDetails';
  391. import { Link } from "react-router-dom";
  392.  
  393.  
  394. /*Sección de cuentas registradas*/
  395.  
  396. export default class Accounts extends React.Component {
  397.  
  398.     state = {
  399.         showModal: false,
  400.         id: 0,
  401.     };
  402.  
  403.     confirmar = item => {
  404.         console.log(item)
  405.         this.setState({showModal: true})
  406.         this.setState({id: item.id})
  407.     }
  408.  
  409.     testing = () => {
  410.         console.log("testing here")
  411.     }
  412.     changeState = () => {
  413.         this.setState({showModal: false})
  414.     }
  415.  
  416.     render = ( ) => {
  417.         const { showModal } = this.state;
  418.         const { id } = this.state;
  419.         const contentsTable = [
  420.             {id: 0, banco: 'A', tipoCuenta:'Nerd', nroCuenta:1},
  421.             {id: 1, banco: 'B', tipoCuenta:'Nerd', nroCuenta:1},
  422.             {id: 2, banco: 'C', tipoCuenta:'Nerd', nroCuenta:1},
  423.             {id: 3, banco: 'D', tipoCuenta:'Nerd', nroCuenta:1},
  424.         ];
  425.  
  426.         const adminTable  = <TableAdmin
  427.             nameClass = ""
  428.             buttons =  {
  429.                 [
  430.                     {
  431.                         icon: 'edit',
  432.                         action: this.confirmar
  433.                     },
  434.                     {
  435.                         icon: 'eye',
  436.                         action: this.confirmar
  437.                     },
  438.                     {
  439.                         icon: 'trash',
  440.                         action: this.confirmar
  441.                     },
  442.                 ]
  443.             }
  444.             headers = {['Banco', 'Tipo de cuenta', 'Número de cuenta', 'Acciones']}
  445.             fields = {['banco', 'tipoCuenta', 'nroCuenta']}
  446.             contents = {
  447.                 contentsTable
  448.             }
  449.         />;
  450.  
  451.         return [
  452.             showModal && (<ModalDetails
  453.                 elements ={[
  454.                     <p className="card-title">Últimas transacciones</p>,
  455.                     <p>{contentsTable[this.state.id].nombre}</p>
  456.                 ]}
  457.                 buttons =  {[
  458.                     {
  459.                         text: 'cancelar',
  460.                         action: this.changeState,
  461.                     }
  462.                 ]}
  463.             />),
  464.  
  465.             <Col lg={9} md={12} xs={12} key={"summarycol1"}>
  466.                 <Card className="accounts-table" text={'Mis cuentas bancarias'}
  467.                         contents={[
  468.                             adminTable
  469.                         ]}
  470.                     />
  471.             </Col>,
  472.  
  473.             <Col lg={3} md={12} xs={12} key={"summarycol2"}>
  474.                 <Card className="card-actions" text={"Acciones"}
  475.                     contents={[
  476.                         <Link to={'afiliacion-cuenta'} >
  477.                         <Button className={'button-account'}>Agregar contacto</Button>
  478.                         </Link>
  479.                     ]} />
  480.             </Col>
  481.         ]
  482.     };
  483. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement