From 55c0f57d42d82f1f1f5809e9c7d6845b6e0b68af Mon Sep 17 00:00:00 2001 From: gabrhr <73925454+gabrhr@users.noreply.github.com> Date: Wed, 25 May 2022 15:36:35 -0500 Subject: Add PedidoPage - cambio de esqueleto segun figma - componente de etiquetas - tabla y form de Pedido #TODO - estetica de etiquetas - redux y crear end points --- .../app/containers/Odipar/Pedidos/Pedidos.js | 39 +++++ .../containers/Odipar/Pedidos/table/CrudPedido.js | 132 +++++++++++++++++ .../containers/Odipar/Pedidos/table/FormPedido.js | 164 +++++++++++++++++++++ .../app/containers/Odipar/Pedidos/table/index.js | 1 + .../containers/Odipar/Pedidos/table/sampleData.js | 88 +++++++++++ 5 files changed, 424 insertions(+) create mode 100644 front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js create mode 100644 front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js create mode 100644 front/odiparpack/app/containers/Odipar/Pedidos/table/FormPedido.js create mode 100644 front/odiparpack/app/containers/Odipar/Pedidos/table/index.js create mode 100644 front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js (limited to 'front/odiparpack/app/containers/Odipar') diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js b/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js new file mode 100644 index 0000000..c1539e0 --- /dev/null +++ b/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js @@ -0,0 +1,39 @@ +import React, { Component } from 'react'; +import { withStyles } from '@material-ui/core/styles'; +import PropTypes from 'prop-types'; +import { CrudPedido } from './table' +import { Paper, Typography } from '@material-ui/core'; +import { etiqueta } from 'ba-components/Odipar/common'; +const styles = ({ + root: { + flexGrow: 1, + marginTop: 30, + } + }); + +class Pedidos extends Component { + render() { + const { classes } = this.props; + return ( +
+ + {`Pedidos`} + +
+ {etiqueta("etiq_pedido", 1)} +
+
+ + + +
+
+ ); + } +} + +Pedidos.propTypes = { + classes: PropTypes.object.isRequired, +}; + +export default withStyles(styles)(Pedidos); \ No newline at end of file diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js b/front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js new file mode 100644 index 0000000..b11881f --- /dev/null +++ b/front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js @@ -0,0 +1,132 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { withStyles } from '@material-ui/core/styles'; +import { connect } from 'react-redux'; +import { bindActionCreators } from 'redux'; +import { + fetchAction, + addAction, + closeAction, + submitAction, + removeAction, + editAction, + closeNotifAction +} from 'ba-actions/CrudTbFrmActions'; +import { CrudTableForm, Notification } from 'ba-components'; +import { + Paper, + RadioGroup, +} from '@material-ui/core'; +import { anchorTable, dataApi } from './sampleData'; +import FormPedido from './FormPedido'; + + +const branch = 'crudPedido'; + +const renderRadioGroup = ({ input, ...rest }) => ( + input.onChange(value)} + /> +); + + +const styles = ({ + root: { + flexGrow: 1, + } +}); + +class CrudPedido extends Component { + render() { + const { + classes, + fetchData, + addNew, + closeForm, + submit, + removeRow, + editRow, + dataTable, + openForm, + initValues, + closeNotif, + messageNotif, + title, + } = this.props; + return ( +
+ closeNotif(branch)} message={messageNotif} /> + + + {/* Create Your own form, then arrange or custom it as You like */} + + {/* No need create button or submit, because that already made in this component */} + + +
+ ); + } +} + +renderRadioGroup.propTypes = { + input: PropTypes.object.isRequired, +}; + +CrudPedido.propTypes = { + dataTable: PropTypes.object.isRequired, + openForm: PropTypes.bool.isRequired, + classes: PropTypes.object.isRequired, + fetchData: PropTypes.func.isRequired, + addNew: PropTypes.func.isRequired, + closeForm: PropTypes.func.isRequired, + submit: PropTypes.func.isRequired, + removeRow: PropTypes.func.isRequired, + editRow: PropTypes.func.isRequired, + initValues: PropTypes.object.isRequired, + closeNotif: PropTypes.func.isRequired, + messageNotif: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, +}; + + +const mapStateToProps = state => ({ + force: state, // force state from reducer + initValues: state.getIn([branch, 'formValues']), + dataTable: state.getIn([branch, 'dataTable']), + openForm: state.getIn([branch, 'showFrm']), + messageNotif: state.getIn([branch, 'notifMsg']), +}); + +const mapDispatchToProps = dispatch => ({ + fetchData: bindActionCreators(fetchAction, dispatch), + addNew: bindActionCreators(addAction, dispatch), + closeForm: bindActionCreators(closeAction, dispatch), + submit: bindActionCreators(submitAction, dispatch), + removeRow: bindActionCreators(removeAction, dispatch), + editRow: bindActionCreators(editAction, dispatch), + closeNotif: bindActionCreators(closeNotifAction, dispatch), +}); + +const CrudPedidoMapped = connect( + mapStateToProps, + mapDispatchToProps +)(CrudPedido); + +export default withStyles(styles)(CrudPedidoMapped); diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/table/FormPedido.js b/front/odiparpack/app/containers/Odipar/Pedidos/table/FormPedido.js new file mode 100644 index 0000000..40bc801 --- /dev/null +++ b/front/odiparpack/app/containers/Odipar/Pedidos/table/FormPedido.js @@ -0,0 +1,164 @@ +import React, { Component } from 'react'; +import { withStyles } from '@material-ui/core/styles'; +import PropTypes from 'prop-types'; +import { Field } from 'redux-form/immutable'; +import {required, integer} from 'ba-api/validation' +import { + SelectRedux, + TextFieldRedux, + DatePickerRedux +} from 'ba-components/Forms/ReduxFormMUI'; +import { + MenuItem, + InputLabel, + FormControl, + } from '@material-ui/core'; + +const styles = ({ + root: { + flexGrow: 1, + }, + field: { + width: '100%', + marginBottom: 20 + }, + fieldBasic: { + width: '100%', + marginBottom: 20, + marginTop: 10 + }, + inlineWrap: { + display: 'flex', + flexDirection: 'row' + } + }); + + +class FormPedido extends Component { + saveRef = ref => { + this.ref = ref; + return this.ref; + }; + + state = { + selectedDate: new Date(), + } + + handleDateChange = (date) => { + this.setState({ selectedDate: date }); + } + render() { + const { classes } = this.props; + const { selectedDate } = this.state; + const trueBool = true; + return ( + <> +
+ +
+
+ + + +
+
+ + Lugar de Origen + + Lima + Arequipa + Cuzco + + +
+
+ + Destino + + Lima + Arequipa + Cuzco + + +
+
+ +
+
+ +
+
+ +
+
+ +
+ + ); + } +} + +FormPedido.propTypes = { + classes: PropTypes.object.isRequired, + }; + +export default withStyles(styles)(FormPedido); \ No newline at end of file diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/table/index.js b/front/odiparpack/app/containers/Odipar/Pedidos/table/index.js new file mode 100644 index 0000000..48f7c9e --- /dev/null +++ b/front/odiparpack/app/containers/Odipar/Pedidos/table/index.js @@ -0,0 +1 @@ +export CrudPedido from "./CrudPedido"; \ No newline at end of file diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js b/front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js new file mode 100644 index 0000000..2e2b003 --- /dev/null +++ b/front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js @@ -0,0 +1,88 @@ +export const anchorTable = [ + { + name: 'id', + label: 'Id', + initialValue: '', + hidden: true, + type: 'texto' + }, { + name: 'cantidad', + label: 'Cantidad', + width: 'auto', + hidden: false, + type: 'texto' + }, { + name: 'fecha', + label: 'Fecha de pedido', + initialValue: new Date(), + width: 'auto', + hidden: false, + type: 'texto' + }, { + name: 'origen', + label: 'Origen', + initialValue: 'option1', + width: 'auto', + hidden: false, + type: 'texto' + }, { + name: 'destino', + label: 'Destino', + initialValue: 'option1', + width: 'auto', + hidden: false, + type: 'texto' + }, { + name: 'plazo_entrega', + label: 'Plazo de entrega', + initialValue: true, + width: 'auto', + hidden: false, + type: 'texto' + }, { + name: 'nombre', + label: 'Cliente', + initialValue: true, + width: 'auto', + hidden: false, + type: 'texto' + }, { + name: 'estado', + label: 'Estado', + initialValue: 0, + width: 'auto', + hidden: false, + type: 'etiq_pedido' + }, { + name: 'action', + label: 'Action', + initialValue: '', + hidden: false + }, +]; + +export const dataApi = [ + { + id: '1', + cantidad: 30, + fecha: '24/05/2022 11:28 AM', + origen: 'Arequipa', + destino: 'Cuzco', + plazo_entrega: '24 horas', + nombre: 'Juan', + estado: 0, + correo: 'mail@boss.com', + dni: '123456' + }, { + id: '2', + cantidad: 30, + fecha: '24/05/2022 10:28 AM', + origen: 'Lima', + destino: 'Cuzco', + plazo_entrega: '24 horas', + nombre: 'Juan', + estado: 1, + correo: 'mail@boss.com', + dni: '123456' + } +]; -- cgit v1.2.3 From 9c396976bb42a9d41407358ce1a1d37242230f21 Mon Sep 17 00:00:00 2001 From: gabrhr <73925454+gabrhr@users.noreply.github.com> Date: Fri, 27 May 2022 12:50:13 -0500 Subject: Add redux, dispatch and etiquetas MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - estetica de etiquetas (ok) - add message, pedido Reducer - add dispatch en Componentes con connect - add api reducer que obtienen el JSON todo ok #TODO - FIX logica de añadiir - FIX axios y dispatch fuera de un componente --- front/odiparpack/app/actions/actionTypes.js | 7 ++ front/odiparpack/app/actions/message.js | 17 ++++ front/odiparpack/app/actions/pedido.js | 26 +++++ front/odiparpack/app/api/pedido.js | 6 ++ .../app/components/Odipar/EtiquetaData.js | 53 +++++----- front/odiparpack/app/components/Odipar/common.js | 10 +- .../app/components/Sidebar/MainMenuSimple.js | 4 +- .../app/components/Tables/CrudTableForm.js | 2 + front/odiparpack/app/containers/App/index.js | 60 ++++++++++- .../app/containers/Odipar/Pedidos/Pedidos.js | 5 +- .../containers/Odipar/Pedidos/table/CrudPedido.js | 30 +++++- .../containers/Odipar/Pedidos/table/sampleData.js | 16 +-- .../app/containers/Tables/demos/sampleData.js | 27 +++-- front/odiparpack/app/redux/configureStore.js | 6 +- .../odiparpack/app/redux/modules/crudTableForm.js | 1 + front/odiparpack/app/redux/modules/message.js | 30 ++++++ front/odiparpack/app/redux/modules/pedido.js | 16 +++ front/odiparpack/app/redux/reducers.js | 6 ++ front/odiparpack/app/utils/odipar/api.js | 113 +++++++++++++++++++++ front/odiparpack/app/utils/odipar/constants.js | 9 ++ front/odiparpack/app/utils/odipar/menu.js | 51 ++++++++++ .../internals/webpack/webpack.base.babel.js | 1 + front/odiparpack/package-lock.json | 39 ++++++- front/odiparpack/package.json | 3 + 24 files changed, 481 insertions(+), 57 deletions(-) create mode 100644 front/odiparpack/app/actions/message.js create mode 100644 front/odiparpack/app/actions/pedido.js create mode 100644 front/odiparpack/app/api/pedido.js create mode 100644 front/odiparpack/app/redux/modules/message.js create mode 100644 front/odiparpack/app/redux/modules/pedido.js create mode 100644 front/odiparpack/app/utils/odipar/api.js create mode 100644 front/odiparpack/app/utils/odipar/constants.js create mode 100644 front/odiparpack/app/utils/odipar/menu.js (limited to 'front/odiparpack/app/containers/Odipar') diff --git a/front/odiparpack/app/actions/actionTypes.js b/front/odiparpack/app/actions/actionTypes.js index 08986f2..5aaa47a 100644 --- a/front/odiparpack/app/actions/actionTypes.js +++ b/front/odiparpack/app/actions/actionTypes.js @@ -82,3 +82,10 @@ export const DELETE_EVENT = 'DELETE_EVENT'; // Notification Form export const CLOSE_NOTIF = 'CLOSE_NOTIF'; + + +//Odi Message +export const CLOSE_MESSAGE = 'CLOSE_MESSAGE'; +export const OPEN_MESSAGE = 'OPEN_MESSAGE'; + +export const LISTA_PEDIDO = 'SAVE_PEDIDO'; \ No newline at end of file diff --git a/front/odiparpack/app/actions/message.js b/front/odiparpack/app/actions/message.js new file mode 100644 index 0000000..881a41f --- /dev/null +++ b/front/odiparpack/app/actions/message.js @@ -0,0 +1,17 @@ +import * as types from './actionTypes'; +import { partial } from 'odi-utils/constants'; + + +export const closeMessage = () => ({ + type: types.CLOSE_MESSAGE, +}) + +export const setMessage = (type, message) => ({ + type: types.OPEN_MESSAGE, + payload: { + type, message + } +}) + +export const openSuccessMessage = partial(setMessage, 'success'); +export const openErrorMessage = partial(setMessage, 'error'); \ No newline at end of file diff --git a/front/odiparpack/app/actions/pedido.js b/front/odiparpack/app/actions/pedido.js new file mode 100644 index 0000000..15382fe --- /dev/null +++ b/front/odiparpack/app/actions/pedido.js @@ -0,0 +1,26 @@ +import { + getPedidosAPI +} from 'ba-api/pedido'; +import { addMessageCurry } from 'odi-utils/api'; +import * as types from './actionTypes' + +export const setPedidos = (payload) => ({ + type: types.LISTA_PEDIDO, + payload +}); + +export const getPedidos = () => { + return dispatch => { + return new Promise( + (resolve, reject) => { + console.log("entreeeeeeeeee") + addMessageCurry(getPedidosAPI(), dispatch, '',"aaaaaaaaa") + .then(pedidos => { + dispatch(setPedidos({pedidos})); + resolve(pedidos) + console.log(pedidos) + }) + } + ) + } +} \ No newline at end of file diff --git a/front/odiparpack/app/api/pedido.js b/front/odiparpack/app/api/pedido.js new file mode 100644 index 0000000..7cfb3f7 --- /dev/null +++ b/front/odiparpack/app/api/pedido.js @@ -0,0 +1,6 @@ +import { apiPost, apiGet, apiDelete, apiPut } from "odi-utils/api"; + +//GET APIS +export const getPedidosAPI = () => { + return apiGet('ayuda/') +} \ No newline at end of file diff --git a/front/odiparpack/app/components/Odipar/EtiquetaData.js b/front/odiparpack/app/components/Odipar/EtiquetaData.js index 4a2a37c..a2f262d 100644 --- a/front/odiparpack/app/components/Odipar/EtiquetaData.js +++ b/front/odiparpack/app/components/Odipar/EtiquetaData.js @@ -1,10 +1,5 @@ //Pedido export const pedido = { - entregado: { - text: "Entregado", - color: "#81C784", - icon: false - }, pendiente:{ text: "Pendiente", color: "#FFB74D", @@ -15,59 +10,71 @@ export const pedido = { color: "#64B5F6", icon: false }, + entregado: { + text: "Entregado", + color: "#81C784", + icon: false + }, cancelado: { text: "Cancelado", color: "#E57373", icon: false - } + }, + pendienteAveria:{ + text: "Pendiente por Averia", + color: "#FFB74D", + icon: false + } } //Camion export const camion = { - entregado: { - text: "Entregado", + disponible : { + text: "Disponible", color: "#81C784", icon: false }, - pendiente:{ - text: "Pendiente", - color: "#FFB74D", + enReparto: { + text: "En Reparto", + color: "#64B5F6", icon: false }, - enCamino: { - text: "En Camino", - color: "#64B5F6", + mantenimiento:{ + text: "Mantenimiento", + color: "#FFB74D", icon: false }, cancelado: { - text: "Cancelado", + text: "Inhabilitado", color: "#E57373", icon: false } } + //Bloqueos export const bloqueo = { desbloqueado: { - text: "Entregado", + text: "Disponible", color: "#81C784", icon: false }, bloqueado:{ - text: "Pendiente", - color: "#FFB74D", + text: "Bloqueado", + color: "#E57373", icon: false } } - + + //Almacen export const almacen = { noPrincipal: { text: "Pequeño", - color: "#81C784", - icon: false + color: "#DED8D8", + icon: 10 }, principal:{ text: "Principal", - color: "#FFB74D", - icon: false + color: "#DED8D8", + icon: 16 } } \ No newline at end of file diff --git a/front/odiparpack/app/components/Odipar/common.js b/front/odiparpack/app/components/Odipar/common.js index c66b792..39ba76a 100644 --- a/front/odiparpack/app/components/Odipar/common.js +++ b/front/odiparpack/app/components/Odipar/common.js @@ -1,6 +1,7 @@ import React from "react" import { Chip } from "@material-ui/core"; -import {pedido, camion, bloqueo, almacen} from './EtiquetaData' +import { pedido, camion, bloqueo, almacen } from './EtiquetaData' +import Brightness1Icon from '@material-ui/icons/Brightness1'; const etiquetaStyle = color => ({ fontWeight: 'bold', @@ -11,7 +12,7 @@ const etiquetaStyle = color => ({ //Etiquetas export function etiqueta(tipo , estado) { // eslint-disable-line - let {color, text} = "" + let {color, text, icon} = "" switch(tipo){ case 'etiq_pedido': text = pedido[Object.keys(pedido)[estado]].text @@ -29,10 +30,13 @@ export function etiqueta(tipo , estado) { // eslint-disable-line console.log("entre?") text = almacen[Object.keys(almacen)[estado]].text color = almacen[Object.keys(almacen)[estado]].color + icon = almacen[Object.keys(almacen)[estado]].icon break; } return ( - + tipo == "etiq_alma" ? + } style={{fontWeight: 'bold', backgroundColor: color}}/> : + ) } \ No newline at end of file diff --git a/front/odiparpack/app/components/Sidebar/MainMenuSimple.js b/front/odiparpack/app/components/Sidebar/MainMenuSimple.js index f7634ca..18ac8fd 100644 --- a/front/odiparpack/app/components/Sidebar/MainMenuSimple.js +++ b/front/odiparpack/app/components/Sidebar/MainMenuSimple.js @@ -5,10 +5,8 @@ import classNames from 'classnames'; import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import { NavLink } from 'react-router-dom'; -import ExpandLess from '@material-ui/icons/ExpandLess'; -import ExpandMore from '@material-ui/icons/ExpandMore'; // Menu Object -import MenuContent from 'ba-api/menu'; +import MenuContent from 'odi-utils/menu'; import { List, ListItem, ListItemIcon, ListItemText, Collapse, Icon } from '@material-ui/core'; import styles from './sidebar-jss'; diff --git a/front/odiparpack/app/components/Tables/CrudTableForm.js b/front/odiparpack/app/components/Tables/CrudTableForm.js index d2d2ea8..219fcd2 100644 --- a/front/odiparpack/app/components/Tables/CrudTableForm.js +++ b/front/odiparpack/app/components/Tables/CrudTableForm.js @@ -6,6 +6,7 @@ import FloatingPanel from './../Panel/FloatingPanel'; class CrudTableForm extends React.Component { componentDidMount() { + console.log("en el FORM",this.props.dataInit) this.props.fetchData(this.props.dataInit, this.props.branch); } @@ -31,6 +32,7 @@ class CrudTableForm extends React.Component { } = this.props; return (
+
{children} diff --git a/front/odiparpack/app/containers/App/index.js b/front/odiparpack/app/containers/App/index.js index a7313fe..ea78618 100644 --- a/front/odiparpack/app/containers/App/index.js +++ b/front/odiparpack/app/containers/App/index.js @@ -5,11 +5,51 @@ import Auth from './Auth'; import Application from './Application'; import LoginDedicated from '../Pages/Standalone/LoginDedicated'; import ThemeWrapper from './ThemeWrapper'; +import { Snackbar, Button, Icon } from '@material-ui/core'; +import { connect } from 'react-redux'; window.__MUI_USE_NEXT_TYPOGRAPHY_VARIANTS__ = true; -function App() { +function App(props) { + + const handleMessageClose = () => { + props.dispatch(closeMessage()) + } + + const { + openMessage = false, + message = '', + type = 'error' + } = props + return ( + + + {type === 'success' ? 'check_circle' : 'report_problem'} + + {message} +
+ } + action={[ + + ]} + /> @@ -20,4 +60,20 @@ function App() { ); } -export default App; +const reducer = 'message'; +const mapStateToProps = state => ({ + force: state, // force state from reducer + message: state.getIn([reducer, 'message']), + type: state.getIn([reducer, 'type']), + openMessage: state.getIn([reducer, 'openMessage']) +}); + +const mapDispatchToProps = dispatch => ({ + dispatch: dispatch +}); +const AppMapped = connect( + mapStateToProps, + mapDispatchToProps +)(App); + +export default AppMapped; diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js b/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js index c1539e0..a9baab8 100644 --- a/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js +++ b/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js @@ -3,7 +3,7 @@ import { withStyles } from '@material-ui/core/styles'; import PropTypes from 'prop-types'; import { CrudPedido } from './table' import { Paper, Typography } from '@material-ui/core'; -import { etiqueta } from 'ba-components/Odipar/common'; + const styles = ({ root: { flexGrow: 1, @@ -19,9 +19,6 @@ class Pedidos extends Component { {`Pedidos`} -
- {etiqueta("etiq_pedido", 1)} -
diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js b/front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js index b11881f..d1fd553 100644 --- a/front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js +++ b/front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js @@ -19,7 +19,8 @@ import { } from '@material-ui/core'; import { anchorTable, dataApi } from './sampleData'; import FormPedido from './FormPedido'; - +//actions +import { setPedidos, getPedidos } from '../../../../actions/pedido'; const branch = 'crudPedido'; @@ -40,7 +41,25 @@ const styles = ({ }); class CrudPedido extends Component { + constructor (props) { + super(props) + this.state = { + dataReal: [] + }; + + this.props.dispatch(getPedidos()) + .then( res => { + console.log("aqui en el then ps", res) + this.setState({ + dataReal: res + }) + }) + console.log("aqui en el then ps 2", this.props.pedidosLista) + + } + render() { + console.log("render ps") const { classes, fetchData, @@ -56,6 +75,11 @@ class CrudPedido extends Component { messageNotif, title, } = this.props; + + const {dataReal} = this.state; + //console.log("render ps DATA", dataReal) + //console.log("original", dataApi) + return (
closeNotif(branch)} message={messageNotif} /> @@ -63,7 +87,7 @@ class CrudPedido extends Component { ({ dataTable: state.getIn([branch, 'dataTable']), openForm: state.getIn([branch, 'showFrm']), messageNotif: state.getIn([branch, 'notifMsg']), + pedidosLista : state.getIn(['pedido','pedidos']), }); const mapDispatchToProps = dispatch => ({ @@ -122,6 +147,7 @@ const mapDispatchToProps = dispatch => ({ removeRow: bindActionCreators(removeAction, dispatch), editRow: bindActionCreators(editAction, dispatch), closeNotif: bindActionCreators(closeNotifAction, dispatch), + dispatch }); const CrudPedidoMapped = connect( diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js b/front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js index 2e2b003..e16f7cc 100644 --- a/front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js +++ b/front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js @@ -4,10 +4,10 @@ export const anchorTable = [ label: 'Id', initialValue: '', hidden: true, - type: 'texto' }, { name: 'cantidad', label: 'Cantidad', + initialValue: 0, width: 'auto', hidden: false, type: 'texto' @@ -21,28 +21,28 @@ export const anchorTable = [ }, { name: 'origen', label: 'Origen', - initialValue: 'option1', + initialValue: 'Lima', width: 'auto', hidden: false, type: 'texto' }, { name: 'destino', label: 'Destino', - initialValue: 'option1', + initialValue: 'Lima', width: 'auto', hidden: false, type: 'texto' }, { name: 'plazo_entrega', label: 'Plazo de entrega', - initialValue: true, + initialValue: 'aja', width: 'auto', hidden: false, type: 'texto' }, { name: 'nombre', label: 'Cliente', - initialValue: true, + initialValue: null, width: 'auto', hidden: false, type: 'texto' @@ -53,7 +53,8 @@ export const anchorTable = [ width: 'auto', hidden: false, type: 'etiq_pedido' - }, { + }, + { name: 'action', label: 'Action', initialValue: '', @@ -65,8 +66,9 @@ export const dataApi = [ { id: '1', cantidad: 30, - fecha: '24/05/2022 11:28 AM', + origen: 'Arequipa', + fecha: '24/05/2022 11:28 AM', destino: 'Cuzco', plazo_entrega: '24 horas', nombre: 'Juan', diff --git a/front/odiparpack/app/containers/Tables/demos/sampleData.js b/front/odiparpack/app/containers/Tables/demos/sampleData.js index d53d8e2..c783c81 100644 --- a/front/odiparpack/app/containers/Tables/demos/sampleData.js +++ b/front/odiparpack/app/containers/Tables/demos/sampleData.js @@ -9,53 +9,62 @@ export const anchorTable = [ label: 'Text Field', initialValue: null, width: 'auto', - hidden: false + hidden: false, + type:"texto" }, { name: 'email', label: 'Email Field', initialValue: null, width: 'auto', - hidden: false + hidden: false, + type:"texto" }, { name: 'radio', label: 'Radio Option', initialValue: 'option1', width: '80', - hidden: false + hidden: false, + type:"texto" }, { name: 'selection', label: 'Selection', initialValue: 'option1', width: '80', - hidden: false + hidden: false, + type:"texto" }, { name: 'onof', label: 'On/Of Input', initialValue: true, width: '80', - hidden: false + hidden: false, + type:"texto" }, { name: 'checkbox', label: 'Checkbox', initialValue: true, width: '80', - hidden: false + hidden: false, + type:"texto" }, { name: 'textarea', label: 'Text Area', initialValue: 'This is default text', width: 'auto', - hidden: false + hidden: false, + type:"texto" }, { name: 'edited', label: '', initialValue: '', - hidden: true + hidden: true, + type:"texto" }, { name: 'action', label: 'Action', initialValue: '', - hidden: false + hidden: false, + type:"texto" }, ]; diff --git a/front/odiparpack/app/redux/configureStore.js b/front/odiparpack/app/redux/configureStore.js index 49a6b7b..80c84c0 100644 --- a/front/odiparpack/app/redux/configureStore.js +++ b/front/odiparpack/app/redux/configureStore.js @@ -7,6 +7,7 @@ import { fromJS } from 'immutable'; import { routerMiddleware } from 'connected-react-router/immutable'; import createSagaMiddleware from 'redux-saga'; import createReducer from './reducers'; +import thunk from 'redux-thunk'; const sagaMiddleware = createSagaMiddleware(); @@ -14,7 +15,7 @@ export default function configureStore(initialState = {}, history) { // Create the store with two middlewares // 1. sagaMiddleware: Makes redux-sagas work // 2. routerMiddleware: Syncs the location/URL path to the state - const middlewares = [sagaMiddleware, routerMiddleware(history)]; + const middlewares = [thunk,sagaMiddleware, routerMiddleware(history)]; const enhancers = [applyMiddleware(...middlewares)]; @@ -29,11 +30,12 @@ export default function configureStore(initialState = {}, history) { shouldHotReload: false, }) : compose; + /* eslint-enable */ const store = createStore( createReducer(), fromJS(initialState), - composeEnhancers(...enhancers), + composeEnhancers(...enhancers) ); // Extensions diff --git a/front/odiparpack/app/redux/modules/crudTableForm.js b/front/odiparpack/app/redux/modules/crudTableForm.js index d5194c1..29b9813 100644 --- a/front/odiparpack/app/redux/modules/crudTableForm.js +++ b/front/odiparpack/app/redux/modules/crudTableForm.js @@ -24,6 +24,7 @@ const initialItem = (keyTemplate, anchor) => { for (let i = 0; i < rawKey.length; i += 1) { if (rawKey[i] !== 'id') { const itemIndex = anchor.findIndex(a => a.name === rawKey[i]); + if (itemIndex == -1) continue staticKey[rawKey[i]] = anchor[itemIndex].initialValue; } } diff --git a/front/odiparpack/app/redux/modules/message.js b/front/odiparpack/app/redux/modules/message.js new file mode 100644 index 0000000..e02eb08 --- /dev/null +++ b/front/odiparpack/app/redux/modules/message.js @@ -0,0 +1,30 @@ +import { CLOSE_MESSAGE,OPEN_MESSAGE } from 'ba-actions/actionTypes'; + +const initState = { + message: '', + type: '', + openMessage: false +} + +const message = (state = initState, action = {}) => { + + const { type, payload } = action; + + switch (type) { + + case CLOSE_MESSAGE: + return {...initState} + case OPEN_MESSAGE: + return { + ...state, + ...payload, + openMessage: true + } + default: + return state + + } + +} + +export default message; \ No newline at end of file diff --git a/front/odiparpack/app/redux/modules/pedido.js b/front/odiparpack/app/redux/modules/pedido.js new file mode 100644 index 0000000..9101fe4 --- /dev/null +++ b/front/odiparpack/app/redux/modules/pedido.js @@ -0,0 +1,16 @@ +import { LISTA_PEDIDO } from 'ba-actions/actionTypes'; + +const initState = { + pedidos : [] +} + +const pedido = (state = initState, action) => { + switch (action.type) { + case LISTA_PEDIDO: + return { ...state, pedidos: action.payload } + default : + return state + } +} + +export default pedido; \ No newline at end of file diff --git a/front/odiparpack/app/redux/reducers.js b/front/odiparpack/app/redux/reducers.js index 7327c48..e0e2547 100644 --- a/front/odiparpack/app/redux/reducers.js +++ b/front/odiparpack/app/redux/reducers.js @@ -20,6 +20,10 @@ import email from './modules/email'; import calendar from './modules/calendar'; import initval from './modules/initForm'; +//Odipar +import pedido from './modules/pedido'; +import message from './modules/message' + /** * Branching reducers to use one reducer for many components */ @@ -56,6 +60,8 @@ export default function createReducer(injectedReducers) { crudTableForm, crudTbFrmDemo: branchReducer(crudTableForm, 'crudTbFrmDemo'), crudPedido: branchReducer(crudTableForm, 'crudPedido'), + pedido, + message, language: languageProviderReducer, router: connectRouter(history), ...injectedReducers, diff --git a/front/odiparpack/app/utils/odipar/api.js b/front/odiparpack/app/utils/odipar/api.js new file mode 100644 index 0000000..ea5e617 --- /dev/null +++ b/front/odiparpack/app/utils/odipar/api.js @@ -0,0 +1,113 @@ +import Axios from 'axios' +import {apiUrl} from './constants'; +import qs from "query-string"; +import { openSuccessMessage, openErrorMessage } from 'ba-actions/message'; + +export function getHeaders() { + let session = getSession(); + return { + //Authorization: `Token ${(session && session.accessToken) || null}` + } +} + + +export function getSession() { + if (window && window.localStorage) { + return window.localStorage.getObject('session'); + } + + return null; +} + +export function saveSession(value) { + if (window && window.localStorage) { + return window.localStorage.saveObject('session', value); + } + + return null; +} + +export function apiReq(endPoint, data, method, headers, requestOptions = {}) { + return new Promise((res, rej) => { + + headers = { + ...headers + } + if (method === 'get' || method === 'delete') { + data = { + ...requestOptions, + params: data, + paramsSerializer: function (params) { + return qs.stringify(params, { arrayFormat: 'repeat' }) + }, + headers + } + } + + Axios[method](endPoint, data, { headers }).then((result) => { + let { data } = result; + console.log("aca en la promesa ps") + if (data.status === false) { + return rej(data); + } + + return res(data); + }).catch((err) => { + return rej(err); + }); + }) +} + +export function generateUrl(path) { + return apiUrl + path; +} + +export function apiPost(endPoint, data, headers = {}) { + return apiReq(generateUrl(endPoint), data, 'post', headers); +} + +export function apiDelete(endPoint, data, headers = {}) { + return apiReq(generateUrl(endPoint), data, 'delete', headers); +} + +export function apiGet(endPoint, data, headers = {}, requestOptions) { + return apiReq(generateUrl(endPoint), data, 'get', headers, requestOptions); +} + +export function apiPut(endPoint, data, headers = {}) { + return apiReq(generateUrl(endPoint), data, 'put', headers); +} + + +export function addMessageCurry(promise, dispatch, errorMsg = '', successMsg = '', showError = true) { + return new Promise( + (resolve, reject) => { + + promise + .then(response => { + + if (successMsg) { + console.log("mensajitooooo=?????") + dispatch( + openSuccessMessage(successMsg) + ) + } + + resolve(response) + }) + .catch( + err => { + if(showError) { + dispatch( + openErrorMessage(errorMsg || ((err.response && err.response.data.message) || 'Server encountered an error')) + ) + } + + reject(err) + } + ) + + } + ) + +} \ No newline at end of file diff --git a/front/odiparpack/app/utils/odipar/constants.js b/front/odiparpack/app/utils/odipar/constants.js new file mode 100644 index 0000000..73f3521 --- /dev/null +++ b/front/odiparpack/app/utils/odipar/constants.js @@ -0,0 +1,9 @@ +//export const apiUrl = `${config.api}api/v1/`; +export const apiUrl = 'http://localhost:8083/'; + +//mensaje +export function partial(fn, ...presetArgs) { + return function partiallyApplied(...laterArgs) { + return fn(...presetArgs, ...laterArgs); + }; +} \ No newline at end of file diff --git a/front/odiparpack/app/utils/odipar/menu.js b/front/odiparpack/app/utils/odipar/menu.js new file mode 100644 index 0000000..eca2600 --- /dev/null +++ b/front/odiparpack/app/utils/odipar/menu.js @@ -0,0 +1,51 @@ +module.exports = [ + { + key: 'seguimiento', + name: 'Seguimiento', + icon: 'near_me', + link: '/app/dashboard-v2', + child: [ ] + }, + { + key: 'pedidos', + name: 'Pedidos', + icon: 'inventory_2', + link: '/app/pedidos', + child: [ ] + }, + { + key: 'camiones', + name: 'Camiones', + icon: 'local_shipping', + link: '/app/layouts/grid', + child: [ ] + }, + { + key: 'almacenes', + name: 'Almacenes', + icon: 'warehouse', + link: '/app/tables/crud-table', + child: [ ] + }, + { + key: 'red_tramos', + name: 'Red de Tramos', + icon: 'location_on', + link: '/app/forms/reduxform', + child: [ ] + }, + { + key: 'otros', + name: 'Otros parámetros', + icon: 'settings', + link: '/app/ui/icons', + child: [ ] + }, + { + key: 'simulacion', + name: 'Simulación', + icon: 'fast_forward', + link: '/app/pages/calendar', + child: [ ] + } + ]; \ No newline at end of file diff --git a/front/odiparpack/internals/webpack/webpack.base.babel.js b/front/odiparpack/internals/webpack/webpack.base.babel.js index ca26c12..89ff730 100644 --- a/front/odiparpack/internals/webpack/webpack.base.babel.js +++ b/front/odiparpack/internals/webpack/webpack.base.babel.js @@ -197,6 +197,7 @@ module.exports = options => ({ 'ba-api': path.resolve(__dirname, '../../app/api/'), 'ba-images': path.resolve(__dirname, '../../public/images/'), 'ba-vendor': path.resolve(__dirname, '../../node_modules/'), + 'odi-utils': path.resolve(__dirname,'../../app/utils/odipar/') } }, devtool: options.devtool, diff --git a/front/odiparpack/package-lock.json b/front/odiparpack/package-lock.json index bf01861..ff64c1f 100644 --- a/front/odiparpack/package-lock.json +++ b/front/odiparpack/package-lock.json @@ -6069,8 +6069,7 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "decompress-zip": { "version": "0.3.2", @@ -7772,6 +7771,11 @@ } } }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" + }, "finalhandler": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", @@ -13963,6 +13967,17 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, + "query-string": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz", + "integrity": "sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==", + "requires": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -15204,6 +15219,11 @@ "symbol-observable": "^1.2.0" } }, + "redux-devtools-extension": { + "version": "2.13.9", + "resolved": "https://registry.npmjs.org/redux-devtools-extension/-/redux-devtools-extension-2.13.9.tgz", + "integrity": "sha512-cNJ8Q/EtjhQaZ71c8I9+BPySIBVEKssbPpskBfsXqb8HJ002A3KRVHfeRzwRo6mGPqsm7XuHTqNSNeS1Khig0A==" + }, "redux-form": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/redux-form/-/redux-form-8.2.0.tgz", @@ -15244,6 +15264,11 @@ "@redux-saga/core": "^1.0.2" } }, + "redux-thunk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", + "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==" + }, "reflect.ownkeys": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", @@ -16596,6 +16621,11 @@ "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", "dev": true }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -16749,6 +16779,11 @@ "stream-to": "~0.2.0" } }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + }, "string-argv": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", diff --git a/front/odiparpack/package.json b/front/odiparpack/package.json index 7e9a59a..480d0a7 100644 --- a/front/odiparpack/package.json +++ b/front/odiparpack/package.json @@ -136,6 +136,7 @@ "minimist": "1.2.0", "mui-datatables": "^2.13.1", "prop-types": "15.7.2", + "query-string": "^7.1.1", "rcolor": "^1.0.1", "react": "16.8.6", "react-anchor-link-smooth-scroll": "^1.0.11", @@ -171,9 +172,11 @@ "recharts": "^1.5.0", "recompose": "^0.28.2", "redux": "4.0.1", + "redux-devtools-extension": "^2.13.9", "redux-form": "8.2.0", "redux-immutable": "4.0.0", "redux-saga": "1.0.2", + "redux-thunk": "^2.4.1", "reselect": "4.0.0", "sanitize.css": "8.0.0", "serve-favicon": "^2.4.5", -- cgit v1.2.3 From 32fb17de8f78317b165b6f269a8bab2d4e852d0d Mon Sep 17 00:00:00 2001 From: gabrhr <73925454+gabrhr@users.noreply.github.com> Date: Mon, 30 May 2022 20:08:04 -0500 Subject: Fix axios and add new MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - FIX logica de añadiir (ok) - FIX axios y dispatch fuera de un componente (ok) - Cambiar las notificaciones --- front/odiparpack/app/actions/pedido.js | 22 +++---- front/odiparpack/app/api/notifMessage.js | 8 +-- front/odiparpack/app/api/pedido.js | 18 +++++- front/odiparpack/app/app.js | 6 +- .../app/components/Notification/Notification.js | 69 +++++++++++++++++++--- .../app/components/Tables/CrudTableForm.js | 36 +++++++++-- .../app/components/Tables/tableParts/Form.js | 4 +- .../components/Tables/tableParts/MainTableForm.js | 4 +- .../components/Tables/tableParts/RowReadOnly.js | 17 +++++- .../app/containers/Odipar/Pedidos/Pedidos.js | 42 ++++++++++++- .../containers/Odipar/Pedidos/table/CrudPedido.js | 33 ++++------- .../containers/Odipar/Pedidos/table/sampleData.js | 1 - front/odiparpack/app/redux/configureStore.js | 20 +++++-- .../odiparpack/app/redux/modules/crudTableForm.js | 15 ++++- front/odiparpack/app/utils/odipar/api.js | 20 ++----- front/odiparpack/package-lock.json | 5 ++ front/odiparpack/package.json | 3 +- 17 files changed, 235 insertions(+), 88 deletions(-) (limited to 'front/odiparpack/app/containers/Odipar') diff --git a/front/odiparpack/app/actions/pedido.js b/front/odiparpack/app/actions/pedido.js index 15382fe..f8e95d6 100644 --- a/front/odiparpack/app/actions/pedido.js +++ b/front/odiparpack/app/actions/pedido.js @@ -9,18 +9,12 @@ export const setPedidos = (payload) => ({ payload }); -export const getPedidos = () => { - return dispatch => { - return new Promise( - (resolve, reject) => { - console.log("entreeeeeeeeee") - addMessageCurry(getPedidosAPI(), dispatch, '',"aaaaaaaaa") - .then(pedidos => { - dispatch(setPedidos({pedidos})); - resolve(pedidos) - console.log(pedidos) - }) - } - ) +export const getPedidos = () => async dispatch => { + try{ + const res = await getPedidosAPI(); + dispatch(setPedidos({res})) + return res; + }catch(e){ + console.log(e) } -} \ No newline at end of file +} diff --git a/front/odiparpack/app/api/notifMessage.js b/front/odiparpack/app/api/notifMessage.js index 2d2b48b..bc7a60c 100644 --- a/front/odiparpack/app/api/notifMessage.js +++ b/front/odiparpack/app/api/notifMessage.js @@ -1,10 +1,10 @@ module.exports = { - saved: 'Data has been saved', - updated: 'Data has been updated', - removed: 'Item has been removed', + saved: 'Se ha guardado correctamente', + updated: 'Se ha actualizado correctamente', + removed: 'Se ha eliminado correctamente', posted: 'Your post has been submitted', commented: 'Your comment has been submitted', - discard: 'Action canceled', + discard: 'Cancelado', addCart: 'Item added to cart', checkout: 'Thank you for shopping', sent: 'Email sent', diff --git a/front/odiparpack/app/api/pedido.js b/front/odiparpack/app/api/pedido.js index 7cfb3f7..63d6e2e 100644 --- a/front/odiparpack/app/api/pedido.js +++ b/front/odiparpack/app/api/pedido.js @@ -1,6 +1,18 @@ -import { apiPost, apiGet, apiDelete, apiPut } from "odi-utils/api"; +import axios from 'axios'; +import { apiGet } from '../utils/odipar/api'; //GET APIS -export const getPedidosAPI = () => { - return apiGet('ayuda/') +export const getPedidosAPI = async () => { + return await apiGet(`ayuda/`) +} + +export function getAPi(){ + axios.get( + `http://localhost:8083/ayuda/`, //TODO: check currentTimeStamp + { + headers: { + 'Content-type': 'application/json', + }, + } + ) } \ No newline at end of file diff --git a/front/odiparpack/app/app.js b/front/odiparpack/app/app.js index 6845268..34f6a9f 100644 --- a/front/odiparpack/app/app.js +++ b/front/odiparpack/app/app.js @@ -34,9 +34,13 @@ import { translationMessages } from './i18n'; // Create redux store with history const initialState = {}; -const store = configureStore(initialState, history); +//const store = configureStore(initialState, history); const MOUNT_NODE = document.getElementById('app'); +//New store +import { confStore } from './redux/configureStore'; +const store = confStore() + const render = messages => { ReactDOM.render( diff --git a/front/odiparpack/app/components/Notification/Notification.js b/front/odiparpack/app/components/Notification/Notification.js index 7e73896..fcc53a4 100644 --- a/front/odiparpack/app/components/Notification/Notification.js +++ b/front/odiparpack/app/components/Notification/Notification.js @@ -2,8 +2,13 @@ import React from 'react'; import PropTypes from 'prop-types'; import { withStyles } from '@material-ui/core/styles'; import CloseIcon from '@material-ui/icons/Close'; +import classNames from 'classnames'; +import CheckCircleOutlinedIcon from '@material-ui/icons/CheckCircleOutlined'; +import ErrorOutlineOutlinedIcon from '@material-ui/icons/ErrorOutlineOutlined'; +import InfoOutlinedIcon from '@material-ui/icons/InfoOutlined'; +import ReportProblemOutlinedIcon from '@material-ui/icons/ReportProblemOutlined'; -import { Snackbar, IconButton } from '@material-ui/core'; +import { Snackbar, IconButton, SnackbarContent } from '@material-ui/core'; const styles = theme => ({ close: { @@ -11,6 +16,41 @@ const styles = theme => ({ }, }); +const variantIcon = { + success: CheckCircleOutlinedIcon, + warning: ReportProblemOutlinedIcon, + error: ErrorOutlineOutlinedIcon, + info: InfoOutlinedIcon, +}; + +const styles1 = theme => ({ + success: { + backgroundColor: '#b6f8c4', + }, + error: { + backgroundColor: '#faabab', + }, + info: { + backgroundColor: '#b2e7f5', + }, + warning: { + backgroundColor: '#f5ea9f', + }, + icon: { + fontSize: 20, + color: 'black' + }, + iconVariant: { + opacity: 0.9, + marginRight: theme.spacing(1), + }, + message: { + display: 'flex', + alignItems: 'center', + color: 'black' + }, +}); + class Notification extends React.Component { handleClose = (event, reason) => { if (reason === 'clickaway') { @@ -20,20 +60,30 @@ class Notification extends React.Component { }; render() { - const { classes, message } = this.props; + const { classes, message, variant } = this.props; + const Icon = variantIcon[variant]; return ( this.handleClose()} ContentProps={{ 'aria-describedby': 'message-id', }} - message={message} + anchorOrigin={{ + vertical: 'top', + horizontal: 'right', + }} + + > + + + {message} + + )} action={[ this.handleClose()} > - + , ]} /> + ); } } @@ -56,4 +107,4 @@ Notification.propTypes = { message: PropTypes.string.isRequired, }; -export default withStyles(styles)(Notification); +export default withStyles(styles1)(Notification); diff --git a/front/odiparpack/app/components/Tables/CrudTableForm.js b/front/odiparpack/app/components/Tables/CrudTableForm.js index 219fcd2..0ba5264 100644 --- a/front/odiparpack/app/components/Tables/CrudTableForm.js +++ b/front/odiparpack/app/components/Tables/CrudTableForm.js @@ -5,15 +5,39 @@ import MainTableForm from './tableParts/MainTableForm'; import FloatingPanel from './../Panel/FloatingPanel'; class CrudTableForm extends React.Component { - componentDidMount() { - console.log("en el FORM",this.props.dataInit) - this.props.fetchData(this.props.dataInit, this.props.branch); + + componentDidUpdate(previousProps) { + if (previousProps.dataInit !== this.props.dataInit) { + //console.log("en el FORM",this.props.dataInit) + this.props.fetchData(this.props.dataInit, this.props.branch); + } } sendValues = (values) => { setTimeout(() => { this.props.submit(values, this.props.branch); }, 500); + if (this.props.editingId === this.props.initValues.get('id')) { + this.props.dispatch(this.props.editRowAPI()).then((res) => { + if (res) { + console.log("EDIT RO ", res) + } + }) + } else { + this.props.dispatch(this.props.addNewAPI()).then((res) => { + if (res) { + console.log("ADD NEW FORM ", res) + } + }) + } + + } + + getTitle( ){ + if (this.props.editingId === this.props.initValues.get(this.props.anchor[0].name)) { + return "Editar" + } + return "Añadir nuevo" } render() { @@ -28,12 +52,13 @@ class CrudTableForm extends React.Component { anchor, children, branch, - initValues + initValues, + removeRowAPI } = this.props; return (
- + {children} @@ -46,6 +71,7 @@ class CrudTableForm extends React.Component { editRow={editRow} anchor={anchor} branch={branch} + removeRowAPI={removeRowAPI} />
); diff --git a/front/odiparpack/app/components/Tables/tableParts/Form.js b/front/odiparpack/app/components/Tables/tableParts/Form.js index da66966..66188c7 100644 --- a/front/odiparpack/app/components/Tables/tableParts/Form.js +++ b/front/odiparpack/app/components/Tables/tableParts/Form.js @@ -31,14 +31,14 @@ class Form extends Component {
diff --git a/front/odiparpack/app/components/Tables/tableParts/MainTableForm.js b/front/odiparpack/app/components/Tables/tableParts/MainTableForm.js index 8869212..1437fa8 100644 --- a/front/odiparpack/app/components/Tables/tableParts/MainTableForm.js +++ b/front/odiparpack/app/components/Tables/tableParts/MainTableForm.js @@ -29,7 +29,8 @@ class MainTableForm extends React.Component { editRow, addNew, anchor, - branch + branch, + removeRowAPI } = this.props; const getItems = dataArray => dataArray.map(item => ( editRow(item, branch)} anchor={anchor} branch={branch} + removeRowAPI = {removeRowAPI} /> )); diff --git a/front/odiparpack/app/components/Tables/tableParts/RowReadOnly.js b/front/odiparpack/app/components/Tables/tableParts/RowReadOnly.js index 2f4a519..d060d02 100644 --- a/front/odiparpack/app/components/Tables/tableParts/RowReadOnly.js +++ b/front/odiparpack/app/components/Tables/tableParts/RowReadOnly.js @@ -8,6 +8,7 @@ import EditIcon from '@material-ui/icons/BorderColor'; import { etiqueta } from 'ba-components/Odipar/common'; import { TableCell, IconButton, LinearProgress } from '@material-ui/core'; +import { connect } from 'react-redux'; const styles = theme => ({ button: { @@ -23,10 +24,16 @@ class RowReadOnly extends React.Component { item, removeRow, editRow, - branch + branch, + removeRowAPI } = this.props; const eventDel = () => { removeRow(item, branch); + this.props.dispatch(removeRowAPI()).then((res) => { + if (res) { + console.log("REMOVE READ ONLY ", res) + } + }) }; const eventEdit = () => { editRow(item, branch); @@ -86,5 +93,11 @@ RowReadOnly.propTypes = { editRow: PropTypes.func.isRequired, branch: PropTypes.string.isRequired, }; +const mapDispatchToProps = dispatch => ({ + dispatch +}); -export default withStyles(styles)(RowReadOnly); +const RowReadOnlyMapped = connect( + mapDispatchToProps +)(RowReadOnly); +export default withStyles(styles)(RowReadOnlyMapped); diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js b/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js index a9baab8..27adce5 100644 --- a/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js +++ b/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js @@ -3,6 +3,11 @@ import { withStyles } from '@material-ui/core/styles'; import PropTypes from 'prop-types'; import { CrudPedido } from './table' import { Paper, Typography } from '@material-ui/core'; +import { connect } from 'react-redux'; + +// +import { getPedidos } from 'ba-actions/pedido'; +import pedido from '../../../redux/modules/pedido'; const styles = ({ root: { @@ -12,7 +17,25 @@ const styles = ({ }); class Pedidos extends Component { + constructor (props) { + super(props) + this.state = { + dataRealF: [] + }; + this.props.dispatch(getPedidos()).then((res) => { + if (res) { + this.setState({ + dataRealF: res.data, + }); + } + }) + //console.log("Pedido - LUEGO DE THEN ", this.state.dataRealF) + } + + render() { + const {dataRealF} = this.state; + //console.log ("aNTESZSSSS?", pedidosLista) const { classes } = this.props; return (
@@ -21,7 +44,7 @@ class Pedidos extends Component {
- +
@@ -33,4 +56,19 @@ Pedidos.propTypes = { classes: PropTypes.object.isRequired, }; -export default withStyles(styles)(Pedidos); \ No newline at end of file +const reducer = 'pedido' +const mapStateToProps = state => ({ + force: state, // force state from reducer + pedidosLista : state.getIn([reducer]), +}); + +const mapDispatchToProps = dispatch => ({ + dispatch +}); + +const PedidosMapped = connect( + mapStateToProps, + mapDispatchToProps +)(Pedidos); + +export default withStyles(styles)(PedidosMapped); \ No newline at end of file diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js b/front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js index d1fd553..c7a7a58 100644 --- a/front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js +++ b/front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js @@ -20,8 +20,7 @@ import { import { anchorTable, dataApi } from './sampleData'; import FormPedido from './FormPedido'; //actions -import { setPedidos, getPedidos } from '../../../../actions/pedido'; - +import { getPedidos } from '../../../../actions/pedido'; const branch = 'crudPedido'; const renderRadioGroup = ({ input, ...rest }) => ( @@ -41,25 +40,9 @@ const styles = ({ }); class CrudPedido extends Component { - constructor (props) { - super(props) - this.state = { - dataReal: [] - }; - - this.props.dispatch(getPedidos()) - .then( res => { - console.log("aqui en el then ps", res) - this.setState({ - dataReal: res - }) - }) - console.log("aqui en el then ps 2", this.props.pedidosLista) - - } render() { - console.log("render ps") + //console.log("render ps") const { classes, fetchData, @@ -74,15 +57,17 @@ class CrudPedido extends Component { closeNotif, messageNotif, title, + dataReal, + dispatch, + editingId } = this.props; - const {dataReal} = this.state; //console.log("render ps DATA", dataReal) //console.log("original", dataApi) return (
- closeNotif(branch)} message={messageNotif} /> + closeNotif(branch)} variant = "success" message={messageNotif} /> {/* Create Your own form, then arrange or custom it as You like */} @@ -136,6 +126,7 @@ const mapStateToProps = state => ({ dataTable: state.getIn([branch, 'dataTable']), openForm: state.getIn([branch, 'showFrm']), messageNotif: state.getIn([branch, 'notifMsg']), + editingId: state.getIn([branch, 'editingId']), pedidosLista : state.getIn(['pedido','pedidos']), }); diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js b/front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js index e16f7cc..3a7556c 100644 --- a/front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js +++ b/front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js @@ -66,7 +66,6 @@ export const dataApi = [ { id: '1', cantidad: 30, - origen: 'Arequipa', fecha: '24/05/2022 11:28 AM', destino: 'Cuzco', diff --git a/front/odiparpack/app/redux/configureStore.js b/front/odiparpack/app/redux/configureStore.js index 80c84c0..767af03 100644 --- a/front/odiparpack/app/redux/configureStore.js +++ b/front/odiparpack/app/redux/configureStore.js @@ -8,14 +8,15 @@ import { routerMiddleware } from 'connected-react-router/immutable'; import createSagaMiddleware from 'redux-saga'; import createReducer from './reducers'; import thunk from 'redux-thunk'; +import { composeWithDevTools } from "redux-devtools-extension"; const sagaMiddleware = createSagaMiddleware(); -export default function configureStore(initialState = {}, history) { +export function configureStore(initialState = {}, history) { // Create the store with two middlewares // 1. sagaMiddleware: Makes redux-sagas work // 2. routerMiddleware: Syncs the location/URL path to the state - const middlewares = [thunk,sagaMiddleware, routerMiddleware(history)]; + const middlewares = [thunk, routerMiddleware(history)]; const enhancers = [applyMiddleware(...middlewares)]; @@ -35,13 +36,13 @@ export default function configureStore(initialState = {}, history) { const store = createStore( createReducer(), fromJS(initialState), - composeEnhancers(...enhancers) + composeWithDevTools(applyMiddleware(thunk)) ); // Extensions - store.runSaga = sagaMiddleware.run; + //store.runSaga = sagaMiddleware.run; store.injectedReducers = {}; // Reducer registry - store.injectedSagas = {}; // Saga registry + //store.injectedSagas = {}; // Saga registry // Make reducers hot reloadable, see http://mxs.is/googmo /* istanbul ignore next */ @@ -53,3 +54,12 @@ export default function configureStore(initialState = {}, history) { return store; } + +export function confStore (){ + const store = createStore( + createReducer(), + composeWithDevTools(applyMiddleware(thunk)) + ); + store.injectedReducers = {}; + return store; +} diff --git a/front/odiparpack/app/redux/modules/crudTableForm.js b/front/odiparpack/app/redux/modules/crudTableForm.js index 29b9813..acf9abd 100644 --- a/front/odiparpack/app/redux/modules/crudTableForm.js +++ b/front/odiparpack/app/redux/modules/crudTableForm.js @@ -31,6 +31,19 @@ const initialItem = (keyTemplate, anchor) => { return Map(staticKey); }; + +const initialItemNew = (anchor) => { + const [...rawKey] = anchor.map((e) => e.name); + const staticKey = {}; + for (let i = 0; i < rawKey.length; i += 1) { + if (rawKey[i] !== 'id') { + staticKey[rawKey[i]] = anchor[i].initialValue; + } + } + + return Map(staticKey); +}; + let editingIndex = 0; const initialImmutableState = fromJS(initialState); @@ -46,7 +59,7 @@ export default function reducer(state = initialImmutableState, action = {}) { case `${branch}/${ADD_NEW}`: return state.withMutations((mutableState) => { const raw = state.get('dataTable').last(); - const initial = initialItem(raw, action.anchor); + const initial = initialItemNew(action.anchor); mutableState.set('formValues', initial); mutableState.set('showFrm', true); }); diff --git a/front/odiparpack/app/utils/odipar/api.js b/front/odiparpack/app/utils/odipar/api.js index ea5e617..50c2beb 100644 --- a/front/odiparpack/app/utils/odipar/api.js +++ b/front/odiparpack/app/utils/odipar/api.js @@ -1,4 +1,4 @@ -import Axios from 'axios' +import axios from 'axios' import {apiUrl} from './constants'; import qs from "query-string"; import { openSuccessMessage, openErrorMessage } from 'ba-actions/message'; @@ -28,8 +28,7 @@ export function saveSession(value) { } export function apiReq(endPoint, data, method, headers, requestOptions = {}) { - return new Promise((res, rej) => { - + //console.log("apiReq - ANTES DE PROMESA") headers = { ...headers } @@ -44,18 +43,7 @@ export function apiReq(endPoint, data, method, headers, requestOptions = {}) { } } - Axios[method](endPoint, data, { headers }).then((result) => { - let { data } = result; - console.log("aca en la promesa ps") - if (data.status === false) { - return rej(data); - } - - return res(data); - }).catch((err) => { - return rej(err); - }); - }) + return axios[method](endPoint, data, { headers }) } export function generateUrl(path) { @@ -87,7 +75,7 @@ export function addMessageCurry(promise, dispatch, errorMsg = '', successMsg = ' .then(response => { if (successMsg) { - console.log("mensajitooooo=?????") + console.log("addMessageCurry -SUCCESS MSG") dispatch( openSuccessMessage(successMsg) ) diff --git a/front/odiparpack/package-lock.json b/front/odiparpack/package-lock.json index ff64c1f..2b4b0e5 100644 --- a/front/odiparpack/package-lock.json +++ b/front/odiparpack/package-lock.json @@ -19244,6 +19244,11 @@ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" }, + "when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=" + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/front/odiparpack/package.json b/front/odiparpack/package.json index 480d0a7..d2cde1e 100644 --- a/front/odiparpack/package.json +++ b/front/odiparpack/package.json @@ -182,7 +182,8 @@ "serve-favicon": "^2.4.5", "slick-carousel": "^1.8.1", "warning": "4.0.2", - "whatwg-fetch": "2.0.4" + "whatwg-fetch": "2.0.4", + "when": "^3.7.8" }, "devDependencies": { "@babel/cli": "7.4.3", -- cgit v1.2.3 From cbc7d7f7494508fda69e88c76702a878bebca0e2 Mon Sep 17 00:00:00 2001 From: gabrhr <73925454+gabrhr@users.noreply.github.com> Date: Tue, 31 May 2022 03:58:23 -0500 Subject: Add Almacenes - todo de almacenes, redux, pagina - mejoro form de pedido (etiqueta estado, RUC) #TODO - Ver combobox con API --- front/odiparpack/app/actions/actionTypes.js | 6 +- front/odiparpack/app/actions/almacen.js | 19 +++ front/odiparpack/app/actions/pedido.js | 1 - front/odiparpack/app/api/almacen.js | 6 + front/odiparpack/app/api/themePalette.js | 17 ++- .../app/components/Forms/ReduxFormMUI.js | 7 + front/odiparpack/app/components/Odipar/common.js | 11 +- .../app/components/Tables/CrudTableForm.js | 5 +- front/odiparpack/app/containers/App/Application.js | 4 +- .../app/containers/Odipar/Almacen/Almacenes.js | 66 +++++++++ .../containers/Odipar/Almacen/table/CrudAlmacen.js | 148 +++++++++++++++++++++ .../containers/Odipar/Almacen/table/FormAlmacen.js | 124 +++++++++++++++++ .../containers/Odipar/Almacen/table/dataAlmacen.js | 75 +++++++++++ .../app/containers/Odipar/Almacen/table/index.js | 1 + .../app/containers/Odipar/Pedidos/Pedidos.js | 3 +- .../containers/Odipar/Pedidos/table/FormPedido.js | 30 ++++- .../containers/Odipar/Pedidos/table/sampleData.js | 5 +- front/odiparpack/app/containers/pageListAsync.js | 8 ++ front/odiparpack/app/redux/modules/almacen.js | 16 +++ front/odiparpack/app/redux/reducers.js | 3 + .../odiparpack/app/styles/layout/_typography.scss | 4 +- front/odiparpack/app/utils/odipar/menu.js | 2 +- 22 files changed, 539 insertions(+), 22 deletions(-) create mode 100644 front/odiparpack/app/actions/almacen.js create mode 100644 front/odiparpack/app/api/almacen.js create mode 100644 front/odiparpack/app/containers/Odipar/Almacen/Almacenes.js create mode 100644 front/odiparpack/app/containers/Odipar/Almacen/table/CrudAlmacen.js create mode 100644 front/odiparpack/app/containers/Odipar/Almacen/table/FormAlmacen.js create mode 100644 front/odiparpack/app/containers/Odipar/Almacen/table/dataAlmacen.js create mode 100644 front/odiparpack/app/containers/Odipar/Almacen/table/index.js create mode 100644 front/odiparpack/app/redux/modules/almacen.js (limited to 'front/odiparpack/app/containers/Odipar') diff --git a/front/odiparpack/app/actions/actionTypes.js b/front/odiparpack/app/actions/actionTypes.js index 5aaa47a..8fd305f 100644 --- a/front/odiparpack/app/actions/actionTypes.js +++ b/front/odiparpack/app/actions/actionTypes.js @@ -87,5 +87,7 @@ export const CLOSE_NOTIF = 'CLOSE_NOTIF'; //Odi Message export const CLOSE_MESSAGE = 'CLOSE_MESSAGE'; export const OPEN_MESSAGE = 'OPEN_MESSAGE'; - -export const LISTA_PEDIDO = 'SAVE_PEDIDO'; \ No newline at end of file +//Odi Pedido +export const LISTA_PEDIDO = 'LISTA_PEDIDO'; +//Odi Almacen +export const LISTA_ALMACEN = 'LISTA_ALMACEN'; \ No newline at end of file diff --git a/front/odiparpack/app/actions/almacen.js b/front/odiparpack/app/actions/almacen.js new file mode 100644 index 0000000..b5694cd --- /dev/null +++ b/front/odiparpack/app/actions/almacen.js @@ -0,0 +1,19 @@ +import { + getAlmacenesAPI +} from 'ba-api/almacen'; +import * as types from './actionTypes' + +export const setAlmacenes = (payload) => ({ + type: types.LISTA_ALMACEN, + payload +}); + +export const getAlmacenes = () => async dispatch => { + try{ + const res = await getAlmacenesAPI(); + dispatch(setAlmacenes({res})) + return res; + }catch(e){ + console.log(e) + } +} \ No newline at end of file diff --git a/front/odiparpack/app/actions/pedido.js b/front/odiparpack/app/actions/pedido.js index f8e95d6..8a011f0 100644 --- a/front/odiparpack/app/actions/pedido.js +++ b/front/odiparpack/app/actions/pedido.js @@ -1,7 +1,6 @@ import { getPedidosAPI } from 'ba-api/pedido'; -import { addMessageCurry } from 'odi-utils/api'; import * as types from './actionTypes' export const setPedidos = (payload) => ({ diff --git a/front/odiparpack/app/api/almacen.js b/front/odiparpack/app/api/almacen.js new file mode 100644 index 0000000..dcc629b --- /dev/null +++ b/front/odiparpack/app/api/almacen.js @@ -0,0 +1,6 @@ +import { apiGet } from 'odi-utils/api'; + +//GET APIS +export const getAlmacenesAPI = async () => { + return await apiGet(`ayuda/almacen`) +} \ No newline at end of file diff --git a/front/odiparpack/app/api/themePalette.js b/front/odiparpack/app/api/themePalette.js index c7971b3..eaec9e7 100644 --- a/front/odiparpack/app/api/themePalette.js +++ b/front/odiparpack/app/api/themePalette.js @@ -200,7 +200,22 @@ const themePalette = (color) => ({ secondary: palette[color].palette.secondary, }, typography: { - useNextVariants: true, + h5: { + fontSize: 18, + fontWeight: 600, + color: "#202A75", + margin: "5px 0 10px", + }, + h4: { + fontSize: 25, + fontWeight: 500, + margin: "10px 0 5px", + }, + h6: { + fontSize: 17, + fontWeight: 420, + margin: "0px 0 0px", + }, }, }); diff --git a/front/odiparpack/app/components/Forms/ReduxFormMUI.js b/front/odiparpack/app/components/Forms/ReduxFormMUI.js index e3f5c33..285543f 100644 --- a/front/odiparpack/app/components/Forms/ReduxFormMUI.js +++ b/front/odiparpack/app/components/Forms/ReduxFormMUI.js @@ -6,6 +6,8 @@ import Checkbox from '@material-ui/core/Checkbox'; import Switch from '@material-ui/core/Switch'; import { DateTimePicker, MuiPickersUtilsProvider } from '@material-ui/pickers'; +import { etiqueta } from '../Odipar/common'; +import { Chip } from '@material-ui/core'; import MomentUtils from '@date-io/moment'; import moment from 'moment' import 'moment/locale/es' @@ -88,3 +90,8 @@ export const DatePickerRedux = ({ input, label, readonly}) => ( /> ); + +export const EstadoRedux = ({input, label}) => { + const value = input.value? input.value : 0 + return etiqueta("etiq_pedido", value) +} diff --git a/front/odiparpack/app/components/Odipar/common.js b/front/odiparpack/app/components/Odipar/common.js index 39ba76a..b6fb49d 100644 --- a/front/odiparpack/app/components/Odipar/common.js +++ b/front/odiparpack/app/components/Odipar/common.js @@ -3,7 +3,7 @@ import { Chip } from "@material-ui/core"; import { pedido, camion, bloqueo, almacen } from './EtiquetaData' import Brightness1Icon from '@material-ui/icons/Brightness1'; -const etiquetaStyle = color => ({ +export const etiquetaStyle = color => ({ fontWeight: 'bold', color: '#FFF', backgroundColor: color @@ -27,10 +27,11 @@ export function etiqueta(tipo , estado) { // eslint-disable-line color = bloqueo[Object.keys(bloqueo)[estado]].color break; case 'etiq_alma': - console.log("entre?") - text = almacen[Object.keys(almacen)[estado]].text - color = almacen[Object.keys(almacen)[estado]].color - icon = almacen[Object.keys(almacen)[estado]].icon + let {estadoNum} = 2 + estado === false? estadoNum = 0 : estadoNum = 1 + text = almacen[Object.keys(almacen)[estadoNum]].text + color = almacen[Object.keys(almacen)[estadoNum]].color + icon = almacen[Object.keys(almacen)[estadoNum]].icon break; } diff --git a/front/odiparpack/app/components/Tables/CrudTableForm.js b/front/odiparpack/app/components/Tables/CrudTableForm.js index 0ba5264..017a3fc 100644 --- a/front/odiparpack/app/components/Tables/CrudTableForm.js +++ b/front/odiparpack/app/components/Tables/CrudTableForm.js @@ -5,10 +5,13 @@ import MainTableForm from './tableParts/MainTableForm'; import FloatingPanel from './../Panel/FloatingPanel'; class CrudTableForm extends React.Component { + /* componentDidMount(){ + this.props.fetchData(this.props.dataInit, this.props.branch); + } */ componentDidUpdate(previousProps) { if (previousProps.dataInit !== this.props.dataInit) { - //console.log("en el FORM",this.props.dataInit) + //console.log("en el FORM",this.props.dataInit)} this.props.fetchData(this.props.dataInit, this.props.branch); } } diff --git a/front/odiparpack/app/containers/App/Application.js b/front/odiparpack/app/containers/App/Application.js index 21c7a76..8a30720 100644 --- a/front/odiparpack/app/containers/App/Application.js +++ b/front/odiparpack/app/containers/App/Application.js @@ -26,7 +26,8 @@ import { Photos, Error, Settings, HelpSupport, MapMarker, MapDirection, SearchMap, TrafficIndicator, StreetViewMap, NotFound, - Pedidos + Pedidos, + Almacenes } from '../pageListAsync'; function Application(props) { @@ -39,6 +40,7 @@ function Application(props) { {/* Pedidos */} + { /* Layout */ } diff --git a/front/odiparpack/app/containers/Odipar/Almacen/Almacenes.js b/front/odiparpack/app/containers/Odipar/Almacen/Almacenes.js new file mode 100644 index 0000000..31a3039 --- /dev/null +++ b/front/odiparpack/app/containers/Odipar/Almacen/Almacenes.js @@ -0,0 +1,66 @@ +import React, { Component } from 'react'; +import { withStyles } from '@material-ui/core/styles'; +import PropTypes from 'prop-types'; +import { CrudAlmacen } from './table' +import { Paper, Typography } from '@material-ui/core'; +import { connect } from 'react-redux'; + +//actions +import { getAlmacenes } from '../../../actions/almacen'; + +const styles = ({ + root: { + flexGrow: 1, + marginTop: 30, + } + }); + +class Almacenes extends Component { + constructor (props) { + super(props) + this.state = { + dataRealF: [] + }; + this.props.dispatch(getAlmacenes()).then((res) => { + if (res) { + this.setState({ + dataRealF: res.data, + }); + } + }) + //console.log("Pedido - LUEGO DE THEN ", this.state.dataRealF) + } + + + render() { + const {dataRealF} = this.state; + //console.log ("aNTESZSSSS?") + const { classes } = this.props; + return ( +
+ + {`Almacenes`} + +
+ + + +
+
+ ); + } +} + +Almacenes.propTypes = { + classes: PropTypes.object.isRequired, +}; + +const mapDispatchToProps = dispatch => ({ + dispatch +}); + +const AlmacenesMapped = connect( + mapDispatchToProps +)(Almacenes); + +export default withStyles(styles)(AlmacenesMapped); \ No newline at end of file diff --git a/front/odiparpack/app/containers/Odipar/Almacen/table/CrudAlmacen.js b/front/odiparpack/app/containers/Odipar/Almacen/table/CrudAlmacen.js new file mode 100644 index 0000000..887d603 --- /dev/null +++ b/front/odiparpack/app/containers/Odipar/Almacen/table/CrudAlmacen.js @@ -0,0 +1,148 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { withStyles } from '@material-ui/core/styles'; +import { connect } from 'react-redux'; +import { bindActionCreators } from 'redux'; +import { + fetchAction, + addAction, + closeAction, + submitAction, + removeAction, + editAction, + closeNotifAction +} from 'ba-actions/CrudTbFrmActions'; +import { CrudTableForm, Notification } from 'ba-components'; +import { + Paper, + RadioGroup, +} from '@material-ui/core'; +import { anchorTable, dataApi } from './dataAlmacen'; +import FormAlmacen from './FormAlmacen'; +//actions +import { getPedidos } from '../../../../actions/pedido'; +const branch = 'crudAlmacen'; + +const renderRadioGroup = ({ input, ...rest }) => ( + input.onChange(value)} + /> +); + + +const styles = ({ + root: { + flexGrow: 1, + } +}); + +class CrudAlmacen extends Component { + render() { + //console.log("render ps") + const { + classes, + fetchData, + addNew, + closeForm, + submit, + removeRow, + editRow, + dataTable, + openForm, + initValues, + closeNotif, + messageNotif, + title, + dataReal, + dispatch, + editingId + } = this.props; + + //console.log("render ps DATA", dataReal) + //console.log("original", dataApi) + //console.log("original", anchorTable) + + return ( +
+ closeNotif(branch)} variant = "success" message={messageNotif} /> + + + {/* Create Your own form, then arrange or custom it as You like */} + + {/* No need create button or submit, because that already made in this component */} + + +
+ ); + } +} + +renderRadioGroup.propTypes = { + input: PropTypes.object.isRequired, +}; + +CrudAlmacen.propTypes = { + dataTable: PropTypes.object.isRequired, + openForm: PropTypes.bool.isRequired, + classes: PropTypes.object.isRequired, + fetchData: PropTypes.func.isRequired, + addNew: PropTypes.func.isRequired, + closeForm: PropTypes.func.isRequired, + submit: PropTypes.func.isRequired, + removeRow: PropTypes.func.isRequired, + editRow: PropTypes.func.isRequired, + initValues: PropTypes.object.isRequired, + closeNotif: PropTypes.func.isRequired, + messageNotif: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, +}; + + +const mapStateToProps = state => ({ + force: state, // force state from reducer + initValues: state.getIn([branch, 'formValues']), + dataTable: state.getIn([branch, 'dataTable']), + openForm: state.getIn([branch, 'showFrm']), + messageNotif: state.getIn([branch, 'notifMsg']), + editingId: state.getIn([branch, 'editingId']), +}); + +const mapDispatchToProps = dispatch => ({ + fetchData: bindActionCreators(fetchAction, dispatch), + addNew: bindActionCreators(addAction, dispatch), + closeForm: bindActionCreators(closeAction, dispatch), + submit: bindActionCreators(submitAction, dispatch), + removeRow: bindActionCreators(removeAction, dispatch), + editRow: bindActionCreators(editAction, dispatch), + closeNotif: bindActionCreators(closeNotifAction, dispatch), + dispatch +}); + +const CrudAlmacenMapped = connect( + mapStateToProps, + mapDispatchToProps +)(CrudAlmacen); + +export default withStyles(styles)(CrudAlmacenMapped); diff --git a/front/odiparpack/app/containers/Odipar/Almacen/table/FormAlmacen.js b/front/odiparpack/app/containers/Odipar/Almacen/table/FormAlmacen.js new file mode 100644 index 0000000..05cfda7 --- /dev/null +++ b/front/odiparpack/app/containers/Odipar/Almacen/table/FormAlmacen.js @@ -0,0 +1,124 @@ +import React, { Component } from 'react'; +import { withStyles } from '@material-ui/core/styles'; +import PropTypes from 'prop-types'; +import { Field } from 'redux-form/immutable'; +import {required, integer} from 'ba-api/validation' +import { + SelectRedux, + TextFieldRedux +} from 'ba-components/Forms/ReduxFormMUI'; +import { + MenuItem, + InputLabel, + FormControl, + } from '@material-ui/core'; + +const styles = ({ + root: { + flexGrow: 1, + }, + field: { + width: '100%', + marginBottom: 20 + }, + fieldBasic: { + width: '100%', + marginBottom: 20, + marginTop: 10 + }, + inlineWrap: { + display: 'flex', + flexDirection: 'row' + } + }); + + +class FormAlmacen extends Component { + saveRef = ref => { + this.ref = ref; + return this.ref; + }; + + render() { + const { classes } = this.props; + const trueBool = true; + return ( + <> +
+ + Tipo de Almacen + + Principal + Pequeño + + +
+
+ + Region + + Costa + Sierra + Selva + + +
+
+ + Provincia + + Lima + Arequipa + Cuzco + + +
+
+ + +
+ + ); + } +} + +FormAlmacen.propTypes = { + classes: PropTypes.object.isRequired, + }; + +export default withStyles(styles)(FormAlmacen); \ No newline at end of file diff --git a/front/odiparpack/app/containers/Odipar/Almacen/table/dataAlmacen.js b/front/odiparpack/app/containers/Odipar/Almacen/table/dataAlmacen.js new file mode 100644 index 0000000..685df27 --- /dev/null +++ b/front/odiparpack/app/containers/Odipar/Almacen/table/dataAlmacen.js @@ -0,0 +1,75 @@ +export const anchorTable = [ + { + name: 'id', + label: 'Identificador', + initialValue: '', + hidden: false, + type: 'texto' + }, { + name: 'esPrincipal', + label: 'Tipo de Almacen', + initialValue: true, + width: 'auto', + hidden: false, + type: 'etiq_alma' + }, { + name: 'region', + label: 'Region', + initialValue: 'Costa', + width: 'auto', + hidden: false, + type: 'texto' + }, { + name: 'provincia', + label: 'Provincia', + initialValue: 'Lima', + width: 'auto', + hidden: false, + type: 'texto' + }, { + name: 'latitud', + label: 'Latitud', + initialValue: 0, + width: 'auto', + hidden: false, + type: 'texto' + }, { + name: 'longitud', + label: 'Longitud', + initialValue: 0, + width: 'auto', + hidden: false, + type: 'texto' + }, + { + name: 'action', + label: 'Acciones', + initialValue: '', + hidden: false + }, +]; + +export const dataApi = [ + { + id: '1', + esPrincipal: false, + region: 'Costa', + provincia: 'Arequipa', + latitud: 24, + longitud: 50, + estado: 0, + correo: 'mail@boss.com', + dni: '123456' + }, { + id: '2', + esPrincipal: true, + region: 'Costa', + provincia: 'Lima', + latitud: 24, + longitud: 50, + nombre: 'Juan', + estado: 1, + correo: 'mail@boss.com', + dni: '123456' + } +]; diff --git a/front/odiparpack/app/containers/Odipar/Almacen/table/index.js b/front/odiparpack/app/containers/Odipar/Almacen/table/index.js new file mode 100644 index 0000000..38d22f6 --- /dev/null +++ b/front/odiparpack/app/containers/Odipar/Almacen/table/index.js @@ -0,0 +1 @@ +export CrudAlmacen from "./CrudAlmacen"; \ No newline at end of file diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js b/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js index 27adce5..f617458 100644 --- a/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js +++ b/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js @@ -5,9 +5,8 @@ import { CrudPedido } from './table' import { Paper, Typography } from '@material-ui/core'; import { connect } from 'react-redux'; -// +//actions import { getPedidos } from 'ba-actions/pedido'; -import pedido from '../../../redux/modules/pedido'; const styles = ({ root: { diff --git a/front/odiparpack/app/containers/Odipar/Pedidos/table/FormPedido.js b/front/odiparpack/app/containers/Odipar/Pedidos/table/FormPedido.js index 40bc801..548f47b 100644 --- a/front/odiparpack/app/containers/Odipar/Pedidos/table/FormPedido.js +++ b/front/odiparpack/app/containers/Odipar/Pedidos/table/FormPedido.js @@ -6,12 +6,14 @@ import {required, integer} from 'ba-api/validation' import { SelectRedux, TextFieldRedux, - DatePickerRedux + DatePickerRedux, + EstadoRedux } from 'ba-components/Forms/ReduxFormMUI'; import { MenuItem, InputLabel, FormControl, + Typography, } from '@material-ui/core'; const styles = ({ @@ -53,6 +55,9 @@ class FormPedido extends Component { const trueBool = true; return ( <> + + {`Datos de Pedido`} +
+
+ Estado + + +
+ + {`Datos de Entrega`} +
- Lugar de Origen + Origen
+ + + {`Datos de Cliente`} + +
import('./Odipar/Almacen/Almacenes'), + loading: Loading, +}); + + + // Dashboard export const DashboardV1 = Loadable({ loader: () => import('./Dashboard/Dashboard'), diff --git a/front/odiparpack/app/redux/modules/almacen.js b/front/odiparpack/app/redux/modules/almacen.js new file mode 100644 index 0000000..bb9b7d6 --- /dev/null +++ b/front/odiparpack/app/redux/modules/almacen.js @@ -0,0 +1,16 @@ +import { LISTA_ALMACEN } from 'ba-actions/actionTypes'; + +const initState = { + almacenes : [] +} + +const almacen = (state = initState, action) => { + switch (action.type) { + case LISTA_ALMACEN: + return { ...state, pedidos: action.payload } + default : + return state + } +} + +export default almacen; \ No newline at end of file diff --git a/front/odiparpack/app/redux/reducers.js b/front/odiparpack/app/redux/reducers.js index e0e2547..0c2e9b8 100644 --- a/front/odiparpack/app/redux/reducers.js +++ b/front/odiparpack/app/redux/reducers.js @@ -23,6 +23,7 @@ import initval from './modules/initForm'; //Odipar import pedido from './modules/pedido'; import message from './modules/message' +import almacen from './modules/almacen'; /** * Branching reducers to use one reducer for many components @@ -60,7 +61,9 @@ export default function createReducer(injectedReducers) { crudTableForm, crudTbFrmDemo: branchReducer(crudTableForm, 'crudTbFrmDemo'), crudPedido: branchReducer(crudTableForm, 'crudPedido'), + crudAlmacen: branchReducer(crudTableForm, 'crudAlmacen'), pedido, + almacen, message, language: languageProviderReducer, router: connectRouter(history), diff --git a/front/odiparpack/app/styles/layout/_typography.scss b/front/odiparpack/app/styles/layout/_typography.scss index 49a10c6..247921b 100644 --- a/front/odiparpack/app/styles/layout/_typography.scss +++ b/front/odiparpack/app/styles/layout/_typography.scss @@ -13,14 +13,14 @@ h3, h4, h6 { font-family: $heading-font-family; - font-size: modular-scale(1); + font-size: modular-scale(0.5); line-height: $heading-line-height; margin: 0 0 $small-spacing; } h5 { font-family: $heading-font-family; - font-size: modular-scale(1); + font-size: 1; line-height: $base-line-height; font-weight: 600; color: #202A75; diff --git a/front/odiparpack/app/utils/odipar/menu.js b/front/odiparpack/app/utils/odipar/menu.js index eca2600..1b280b8 100644 --- a/front/odiparpack/app/utils/odipar/menu.js +++ b/front/odiparpack/app/utils/odipar/menu.js @@ -24,7 +24,7 @@ module.exports = [ key: 'almacenes', name: 'Almacenes', icon: 'warehouse', - link: '/app/tables/crud-table', + link: '/app/almacenes', child: [ ] }, { -- cgit v1.2.3