summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--back/aco-mdvrptw/pom.xml16
-rw-r--r--back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/Ant.java33
-rw-r--r--back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/Main.java19
-rw-r--r--back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/MultipleAntColonySystem.java4
-rw-r--r--back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/VrptwGraph.java4
-rw-r--r--back/aco-mdvrptw/src/main/java/org/example/Main.java45
-rwxr-xr-x[-rw-r--r--]back/odiparback/mvnw0
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/AlmacenDaoImp.java6
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/AveriaDaoImp.java2
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/CamionDaoImp.java2
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/ClienteDaoImp.java2
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/PTGDaoImp.java2
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/PedidoDaoImp.java2
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/RegionDaoImp.java2
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/RutaDaoImp.java2
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TipoAveriaDaoImp.java2
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TipoCamionDaoImp.java2
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TramoDaoImp.java2
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TramoRutaDaoImp.java2
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/UsuarioDaoImp.java2
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/demo/controllers/eliminame.java5
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/demo/dao/impl/eliminame.java5
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Almacen.java24
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Averia.java10
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Camion.java8
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Cliente.java8
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/PTG.java21
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Pedido.java22
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Region.java4
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Rol.java4
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Ruta.java22
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TipoAveria.java6
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TipoCamion.java8
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Tramo.java10
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TramoRuta.java14
-rw-r--r--back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Usuario.java10
-rw-r--r--back/odiparback/src/main/resources/application.properties8
-rw-r--r--back/sql/20220601dump.sampledata.sql85
-rw-r--r--back/sql/20220601dump.tables+views.sql245
-rw-r--r--back/sql/some_views_and_selects.sql47
-rw-r--r--back/sql/ss_20220531_221843.pngbin0 -> 99151 bytes
-rw-r--r--front/odiparpack/app/actions/actionTypes.js9
-rw-r--r--front/odiparpack/app/actions/almacen.js19
-rw-r--r--front/odiparpack/app/actions/message.js17
-rw-r--r--front/odiparpack/app/actions/pedido.js19
-rw-r--r--front/odiparpack/app/api/almacen.js6
-rw-r--r--front/odiparpack/app/api/brand.js10
-rw-r--r--front/odiparpack/app/api/dummyContents.js2
-rw-r--r--front/odiparpack/app/api/menu.js475
-rw-r--r--front/odiparpack/app/api/notifMessage.js8
-rw-r--r--front/odiparpack/app/api/pedido.js18
-rw-r--r--front/odiparpack/app/api/themePalette.js17
-rw-r--r--front/odiparpack/app/app.js6
-rw-r--r--front/odiparpack/app/components/Forms/ReduxFormMUI.js28
-rw-r--r--front/odiparpack/app/components/Header/Header.js6
-rw-r--r--front/odiparpack/app/components/Notification/Notification.js69
-rw-r--r--front/odiparpack/app/components/Odipar/EtiquetaData.js80
-rw-r--r--front/odiparpack/app/components/Odipar/common.js43
-rw-r--r--front/odiparpack/app/components/Panel/FloatingPanel.js2
-rw-r--r--front/odiparpack/app/components/Sidebar/MainMenuSimple.js96
-rw-r--r--front/odiparpack/app/components/Sidebar/Sidebar.js14
-rw-r--r--front/odiparpack/app/components/Sidebar/sidebar-jss.js18
-rw-r--r--front/odiparpack/app/components/Tables/CrudTableForm.js37
-rw-r--r--front/odiparpack/app/components/Tables/tableParts/Form.js4
-rw-r--r--front/odiparpack/app/components/Tables/tableParts/MainTableForm.js6
-rw-r--r--front/odiparpack/app/components/Tables/tableParts/RowReadOnly.js43
-rw-r--r--front/odiparpack/app/components/index.js2
-rw-r--r--front/odiparpack/app/containers/App/Application.js7
-rw-r--r--front/odiparpack/app/containers/App/index.js60
-rw-r--r--front/odiparpack/app/containers/Odipar/Almacen/Almacenes.js66
-rw-r--r--front/odiparpack/app/containers/Odipar/Almacen/table/CrudAlmacen.js148
-rw-r--r--front/odiparpack/app/containers/Odipar/Almacen/table/FormAlmacen.js124
-rw-r--r--front/odiparpack/app/containers/Odipar/Almacen/table/dataAlmacen.js75
-rw-r--r--front/odiparpack/app/containers/Odipar/Almacen/table/index.js1
-rw-r--r--front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js73
-rw-r--r--front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js149
-rw-r--r--front/odiparpack/app/containers/Odipar/Pedidos/table/FormPedido.js186
-rw-r--r--front/odiparpack/app/containers/Odipar/Pedidos/table/index.js1
-rw-r--r--front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js90
-rw-r--r--front/odiparpack/app/containers/Tables/demos/sampleData.js27
-rw-r--r--front/odiparpack/app/containers/Templates/Dashboard.js2
-rw-r--r--front/odiparpack/app/containers/Templates/appStyles-jss.js2
-rw-r--r--front/odiparpack/app/containers/pageListAsync.js14
-rw-r--r--front/odiparpack/app/redux/configureStore.js22
-rw-r--r--front/odiparpack/app/redux/modules/almacen.js16
-rw-r--r--front/odiparpack/app/redux/modules/crudTableForm.js16
-rw-r--r--front/odiparpack/app/redux/modules/message.js30
-rw-r--r--front/odiparpack/app/redux/modules/pedido.js16
-rw-r--r--front/odiparpack/app/redux/reducers.js10
-rw-r--r--front/odiparpack/app/styles/layout/_typography.scss4
-rw-r--r--front/odiparpack/app/utils/odipar/api.js101
-rw-r--r--front/odiparpack/app/utils/odipar/constants.js9
-rw-r--r--front/odiparpack/app/utils/odipar/menu.js51
-rw-r--r--front/odiparpack/internals/webpack/webpack.base.babel.js1
-rw-r--r--front/odiparpack/package.json7
-rw-r--r--front/odiparpack/public/images/logo.pngbin15378 -> 25888 bytes
-rw-r--r--front/odiparpack/target/npmlist.json1
97 files changed, 2469 insertions, 611 deletions
diff --git a/back/aco-mdvrptw/pom.xml b/back/aco-mdvrptw/pom.xml
new file mode 100644
index 0000000..29293bc
--- /dev/null
+++ b/back/aco-mdvrptw/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.example</groupId>
+ <artifactId>aco-mdvrptw</artifactId>
+ <version>1.0-SNAPSHOT</version>
+
+ <properties>
+ <maven.compiler.source>17</maven.compiler.source>
+ <maven.compiler.target>17</maven.compiler.target>
+ </properties>
+
+</project> \ No newline at end of file
diff --git a/back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/Ant.java b/back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/Ant.java
new file mode 100644
index 0000000..f422f31
--- /dev/null
+++ b/back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/Ant.java
@@ -0,0 +1,33 @@
+package com.odiparpack.acovrp;
+
+import java.util.ArrayList;
+
+public class Ant {
+ // graph
+ public int current_index;
+ public double vehicle_load;
+ public double vehicle_travel_time;
+ ArrayList<Integer> travel_path;
+ ArrayList<Integer> index_to_visit;
+ double total_travel_distance;
+
+ public Ant() {
+ travel_path = new ArrayList<>();
+ index_to_visit = new ArrayList<>();
+ }
+
+ public static void main(String[] args) {
+ int i = 0;
+ Ant a = new Ant();
+
+ for (i = 0; i < 100; i++) {
+ a.travel_path.add(100 - i);
+ }
+
+ for (i = 0; i < 100; i++) {
+ System.out.format("%d\n", a.travel_path.get(i));
+ }
+ System.out.println(a.travel_path);
+ System.out.println(a);
+ }
+}
diff --git a/back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/Main.java b/back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/Main.java
new file mode 100644
index 0000000..33320bc
--- /dev/null
+++ b/back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/Main.java
@@ -0,0 +1,19 @@
+package com.odiparpack.acovrp;
+
+public class Main {
+ public static void basic_aco() {
+
+ }
+
+ public static void vrptw_aco_figure() {
+
+ }
+
+ public static void example1() {
+
+ }
+
+ public static void main(String[] args) {
+ example1();
+ }
+}
diff --git a/back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/MultipleAntColonySystem.java b/back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/MultipleAntColonySystem.java
new file mode 100644
index 0000000..8ece5aa
--- /dev/null
+++ b/back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/MultipleAntColonySystem.java
@@ -0,0 +1,4 @@
+package com.odiparpack.acovrp;
+
+public class MultipleAntColonySystem {
+}
diff --git a/back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/VrptwGraph.java b/back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/VrptwGraph.java
new file mode 100644
index 0000000..9ee546b
--- /dev/null
+++ b/back/aco-mdvrptw/src/main/java/com/odiparpack/acovrp/VrptwGraph.java
@@ -0,0 +1,4 @@
+package com.odiparpack.acovrp;
+
+public class VrptwGraph {
+}
diff --git a/back/aco-mdvrptw/src/main/java/org/example/Main.java b/back/aco-mdvrptw/src/main/java/org/example/Main.java
new file mode 100644
index 0000000..ce5a91a
--- /dev/null
+++ b/back/aco-mdvrptw/src/main/java/org/example/Main.java
@@ -0,0 +1,45 @@
+package org.example;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class Main {
+ public static void main(String[] args) {
+ String command = "pwd && date && ls ~";
+ command = "~/.odiparpack";
+ try {
+ System.out.println(
+ System.getProperty("os.name") + "\n" +
+ System.getProperty("user.name")
+ );
+ ProcessBuilder pb
+ = new ProcessBuilder("sh", "-c", command);
+ pb.directory(
+ new File(System.getProperty("user.home"))
+ );
+ Process process = pb.start();
+
+ StringBuilder output = new StringBuilder();
+ BufferedReader reader
+ = new BufferedReader(new InputStreamReader(
+ process.getInputStream()
+ ));
+ String line;
+ while ((line = reader.readLine()) != null) {
+ output.append(line + '\n');
+ }
+ int exitVal = process.waitFor();
+ if (exitVal == 0) {
+ System.out.println("The output is:");
+ System.out.println(output);
+ //System.exit(0);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+} \ No newline at end of file
diff --git a/back/odiparback/mvnw b/back/odiparback/mvnw
index 8a8fb22..8a8fb22 100644..100755
--- a/back/odiparback/mvnw
+++ b/back/odiparback/mvnw
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/AlmacenDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/AlmacenDaoImp.java
index 575d38a..7a17ded 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/AlmacenDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/AlmacenDaoImp.java
@@ -23,8 +23,10 @@ public class AlmacenDaoImp implements AlmacenDao {
public List<Almacen> getAll() {
List<Almacen> resultado = null;
try{
- String query = "SELECT * FROM ODP_Almacen";
- resultado = entityManager.createQuery(query).getResultList();
+ String hql = "FROM almacen ";
+ resultado = entityManager.createQuery(hql).getResultList();
+// String query = "SELECT * FROM almacen";
+// resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
System.out.print(ex.getMessage());
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/AveriaDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/AveriaDaoImp.java
index 1bf1882..745a0c2 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/AveriaDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/AveriaDaoImp.java
@@ -23,7 +23,7 @@ public class AveriaDaoImp implements AveriaDao{
public List<Averia> getAll() {
List<Averia> resultado = null;
try{
- String query = "SELECT * FROM ODP_Averia";
+ String query = "SELECT * FROM averia";
resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/CamionDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/CamionDaoImp.java
index 4c97808..00d723d 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/CamionDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/CamionDaoImp.java
@@ -23,7 +23,7 @@ public class CamionDaoImp implements CamionDao {
public List<Camion> getAll() {
List<Camion> resultado = null;
try{
- String query = "SELECT * FROM ODP_Camion";
+ String query = "SELECT * FROM camion";
resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/ClienteDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/ClienteDaoImp.java
index 2a9ae44..54b8d92 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/ClienteDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/ClienteDaoImp.java
@@ -23,7 +23,7 @@ public class ClienteDaoImp implements ClienteDao {
public List<Cliente> getAll() {
List<Cliente> resultado = null;
try{
- String query = "SELECT * FROM ODP_Cliente";
+ String query = "SELECT * FROM cliente";
resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/PTGDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/PTGDaoImp.java
index ac076cf..37d18df 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/PTGDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/PTGDaoImp.java
@@ -23,7 +23,7 @@ public class PTGDaoImp implements PTGDao{
public List<PTG> getAll() {
List<PTG> resultado = null;
try{
- String query = "SELECT * FROM ODP_PTG";
+ String query = "SELECT * FROM ptg";
resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/PedidoDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/PedidoDaoImp.java
index 3ebc387..943a085 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/PedidoDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/PedidoDaoImp.java
@@ -23,7 +23,7 @@ public class PedidoDaoImp implements PedidoDao {
public List<Pedido> getAll() {
List<Pedido> resultado = null;
try{
- String query = "SELECT * FROM ODP_Pedido";
+ String query = "SELECT * FROM pedido";
resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/RegionDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/RegionDaoImp.java
index 15788d4..f5ca8ef 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/RegionDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/RegionDaoImp.java
@@ -23,7 +23,7 @@ public class RegionDaoImp implements RegionDao {
public List<Region> getAll() {
List<Region> resultado = null;
try{
- String query = "SELECT * FROM ODP_Region";
+ String query = "SELECT * FROM region";
resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/RutaDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/RutaDaoImp.java
index 0e491b7..de8ed6c 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/RutaDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/RutaDaoImp.java
@@ -23,7 +23,7 @@ public class RutaDaoImp implements RutaDao {
public List<Ruta> getAll() {
List<Ruta> resultado = null;
try{
- String query = "SELECT * FROM ODP_Ruta";
+ String query = "SELECT * FROM ruta";
resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TipoAveriaDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TipoAveriaDaoImp.java
index f2980cf..0248800 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TipoAveriaDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TipoAveriaDaoImp.java
@@ -23,7 +23,7 @@ public class TipoAveriaDaoImp implements TipoAveriaDao{
public List<TipoAveria> getAll() {
List<TipoAveria> resultado = null;
try{
- String query = "SELECT * FROM ODP_TipoAveria";
+ String query = "SELECT * FROM tipoAveria";
resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TipoCamionDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TipoCamionDaoImp.java
index 0889570..9758a3b 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TipoCamionDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TipoCamionDaoImp.java
@@ -23,7 +23,7 @@ public class TipoCamionDaoImp implements TipoCamionDao{
public List<TipoCamion> getAll() {
List<TipoCamion> resultado = null;
try{
- String query = "SELECT * FROM ODP_TipoCamion";
+ String query = "SELECT * FROM tipoCamion";
resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TramoDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TramoDaoImp.java
index 717dcf2..abd275d 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TramoDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TramoDaoImp.java
@@ -23,7 +23,7 @@ public class TramoDaoImp implements TramoDao{
public List<Tramo> getAll() {
List<Tramo> resultado = null;
try{
- String query = "SELECT * FROM ODP_Tramo";
+ String query = "SELECT * FROM tramo";
resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TramoRutaDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TramoRutaDaoImp.java
index 1808c61..7f5f7dd 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TramoRutaDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/TramoRutaDaoImp.java
@@ -23,7 +23,7 @@ public class TramoRutaDaoImp implements TramoRutaDao {
public List<TramoRuta> getAll() {
List<TramoRuta> resultado = null;
try{
- String query = "SELECT * FROM ODP_TramoRuta";
+ String query = "SELECT * FROM tramoRuta";
resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/UsuarioDaoImp.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/UsuarioDaoImp.java
index c0e6ef1..9ed2f86 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/UsuarioDaoImp.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/dao/imp/UsuarioDaoImp.java
@@ -23,7 +23,7 @@ public class UsuarioDaoImp implements UsuarioDao{
public List<Usuario> getAll() {
List<Usuario> resultado = null;
try{
- String query = "SELECT * FROM ODP_Usuario";
+ String query = "SELECT * FROM usuario";
resultado = entityManager.createQuery(query).getResultList();
}
catch(Exception ex){
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/demo/controllers/eliminame.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/demo/controllers/eliminame.java
new file mode 100644
index 0000000..946b9ef
--- /dev/null
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/demo/controllers/eliminame.java
@@ -0,0 +1,5 @@
+package pe.edu.pucp.odiparback.demo.controllers;
+
+public class eliminame {
+
+}
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/demo/dao/impl/eliminame.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/demo/dao/impl/eliminame.java
new file mode 100644
index 0000000..11a66ab
--- /dev/null
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/demo/dao/impl/eliminame.java
@@ -0,0 +1,5 @@
+package pe.edu.pucp.odiparback.demo.dao.impl;
+
+public class eliminame {
+
+}
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Almacen.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Almacen.java
index ab8e989..121b711 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Almacen.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Almacen.java
@@ -28,22 +28,28 @@ import lombok.Setter;
public class Almacen {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idAlmacen", updatable = false, nullable = false)
- private int idAlmacen;
+ @Column(name = "id", updatable = false, nullable = false)
+ private int id;
- @Column(name = "cuidad")
- private String cuidad; //nombre del almacen = nombre cuidad
+ @Column(name = "ubigeo")
+ private String ubigeo;
- @Column(name = "posicionX")
- private int posicionX;
+ @Column(name = "departamento")
+ private String departamento;
- @Column(name = "posicionY")
- private int posicionY;
+ @Column(name = "provincia")
+ private String provincia;
+
+ @Column(name = "latitud")
+ private double latitud;
+
+ @Column(name = "longitud")
+ private double longitud;
@Column(name = "esPrincipal")
private boolean esPrincipal;
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "idRegion")
+ @JoinColumn(name = "region_fk")
private Region region;
}
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Averia.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Averia.java
index 69d69c3..dae9a24 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Averia.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Averia.java
@@ -30,20 +30,20 @@ import lombok.Setter;
public class Averia {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idAveria", updatable = false, nullable = false)
- private int idAveria;
+ @Column(name = "id", updatable = false, nullable = false)
+ private int id;
@Column(name = "descripcion")
- private String nombre;
+ private String descripcion;
@Column(name = "fechaRegistro")
private Date fechaRegistro;
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "idCamion")
+ @JoinColumn(name = "camion_fk")
private Camion camion;
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "idTipoAveria")
+ @JoinColumn(name = "tipoAveria_fk")
private TipoAveria tipoAveria;
}
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Camion.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Camion.java
index 123ce79..834e2d1 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Camion.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Camion.java
@@ -28,20 +28,20 @@ import lombok.Setter;
public class Camion {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idCamion", updatable = false, nullable = false)
- private int idCamion;
+ @Column(name = "id", updatable = false, nullable = false)
+ private int id;
@Column(name = "placa")
private String placa;
@Column(name = "kilometraje")
- private Double kilometraje;
+ private double kilometraje;
@Column(name = "estado")
private int estado = 0; //0:
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "idTipoCamion")
+ @JoinColumn(name = "tipoCamion_fk")
private TipoCamion tipoCamion;
}
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Cliente.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Cliente.java
index bea5d13..acb4213 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Cliente.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Cliente.java
@@ -25,14 +25,14 @@ import lombok.Setter;
public class Cliente {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idCliente", updatable = false, nullable = false)
- private int idCliente;
+ @Column(name = "id", updatable = false, nullable = false)
+ private int id;
@Column(name = "nombreCompleto")
- private String nombreCompleto;
+ private String nombreCompleto; // Razon Social
@Column(name = "dni")
- private int dni;
+ private int dni; // RUC
@Column(name = "correo")
private String correo;
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/PTG.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/PTG.java
index 2a21379..edc4194 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/PTG.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/PTG.java
@@ -2,12 +2,7 @@ package pe.edu.pucp.odiparback.models;
import java.util.Date;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;
@@ -19,7 +14,7 @@ import lombok.Setter;
@Entity
@Table(name = "ptg")
-@SQLDelete(sql = "UPDATE ptg SET activo = 0 WHERE id = ?")
+@SQLDelete(sql = "UPDATE PTG SET activo = 0 WHERE id = ?")
@Where(clause = "activo = 1")
@NoArgsConstructor
@AllArgsConstructor
@@ -29,12 +24,16 @@ public class PTG {
//Plan de transporte Generado
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idPTG", updatable = false, nullable = false)
+ @Column(name = "id", updatable = false, nullable = false)
private int idPTG;
- @Column(name = "fechaGenerada")
- private Date fechaGenerada;
+ @Column(name = "fechaGenerado")
+ private Date fechaGenerado;
@Column(name = "esSimulacion")
- private boolean esSimulacion;
+ private boolean esSimulacion;
+
+ @ManyToOne(fetch = FetchType.EAGER)
+ @JoinColumn(name = "usuario_fk")
+ private Usuario usuario_fk; // Usuario que genera
}
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Pedido.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Pedido.java
index 616aea4..4df158b 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Pedido.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Pedido.java
@@ -34,33 +34,33 @@ import lombok.Setter;
public class Pedido {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idPedido", updatable = false, nullable = false)
- private int idPedido;
+ @Column(name = "id", updatable = false, nullable = false)
+ private int id;
@Column(name = "cantidad")
private int cantidad;
@Column(name = "estado")
- private int estado; //0: pendiente
+ private int estado; //0: pendiente
- @Column(name = "codigo")
- private int codigo;
+ @Column(name = "codigoPedido")
+ private String codigoPedido; // URL
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "idAlmacen")
+ @JoinColumn(name = "almacen_fk")
private Almacen almacen;
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "idCliente")
+ @JoinColumn(name = "cliente_fk")
private Cliente cliente;
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "idUsuario")
- private Usuario usuarioRegistro; //Usuario que registra
+ @JoinColumn(name = "usuario_fk")
+ private Usuario usuarioRegistro; //Usuario que registra
@Temporal(TemporalType.TIMESTAMP)
@Column(columnDefinition = "DATETIME", nullable = false)
- protected Date fechaRegistro = new Date();
+ protected Date fechaPedido = new Date();
@Temporal(TemporalType.TIMESTAMP)
@Column(columnDefinition = "DATETIME", nullable = false)
@@ -73,7 +73,7 @@ public class Pedido {
@PrePersist
private void onCreate(){
- fechaRegistro=fechaModificacion=addHoursToJavaUtilDate(new Date(), -5);
+ fechaPedido=fechaPedido=addHoursToJavaUtilDate(new Date(), -5);
}
public Date addHoursToJavaUtilDate(Date date, int hours) {
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Region.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Region.java
index 1341317..b0d4625 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Region.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Region.java
@@ -25,8 +25,8 @@ import lombok.Setter;
public class Region {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idRegion", updatable = false, nullable = false)
- private int idRegion;
+ @Column(name = "id", updatable = false, nullable = false)
+ private int id;
@Column(name = "nombre")
private String nombre;
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Rol.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Rol.java
index a3bc5b5..0be1521 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Rol.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Rol.java
@@ -25,8 +25,8 @@ import lombok.Setter;
public class Rol {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idRol", updatable = false, nullable = false)
- private int idRol;
+ @Column(name = "id", updatable = false, nullable = false)
+ private int id;
@Column(name = "nombre")
private String nombre;
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Ruta.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Ruta.java
index b1a9368..2bc8ce0 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Ruta.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Ruta.java
@@ -33,28 +33,24 @@ import lombok.Setter;
public class Ruta {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idRuta", updatable = false, nullable = false)
- private int idRuta;
-
- @Column(name = "nombre")
- private String nombre;
+ @Column(name = "id", updatable = false, nullable = false)
+ private int id;
@Column(name = "fechaInicio")
private Date fechaInicio;
- @Column(name = "fechaFinEst")
- private Date fechaFinEst;
-
-
- @Column(name = "fechaFinReal")
- private Date fechaFinReal;
+ @Column(name = "fechaFin")
+ private Date fechaFin;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
- @JoinColumn(name = "idTramoRuta")
+ @JoinColumn(name = "id")
private List<TramoRuta> tramoRutas;
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "idCamion")
+ @JoinColumn(name = "camion_fk")
private Camion camion;
+ @ManyToOne(fetch = FetchType.EAGER)
+ @JoinColumn(name = "PTG_fk")
+ private PTG ptg;
}
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TipoAveria.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TipoAveria.java
index 92156fd..84488eb 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TipoAveria.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TipoAveria.java
@@ -27,12 +27,12 @@ import lombok.Setter;
public class TipoAveria {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idTipoAveria", updatable = false, nullable = false)
- private int idTipoAveria;
+ @Column(name = "id", updatable = false, nullable = false)
+ private int id;
@Column(name = "nombre")
private String nombre;
@Column(name = "duracion")
- private Date duracion;
+ private int duracion;
}
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TipoCamion.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TipoCamion.java
index 608a089..f8aab31 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TipoCamion.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TipoCamion.java
@@ -25,13 +25,13 @@ import lombok.Setter;
public class TipoCamion {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idTipoCamion", updatable = false, nullable = false)
- private int idTipoCamion;
+ @Column(name = "id", updatable = false, nullable = false)
+ private int id;
@Column(name = "nombre")
private String nombre; //Tipo A, B o C
- @Column(name = "velocidad")
- private Double velocidad;
+ @Column(name = "capacidad")
+ private int capacidad;
} \ No newline at end of file
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Tramo.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Tramo.java
index 1a615d0..4f1ea69 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Tramo.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Tramo.java
@@ -29,20 +29,20 @@ public class Tramo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idTramo", updatable = false, nullable = false)
- private int idTramo;
+ private int id;
@Column(name = "distancia")
private double distancia;
- @Column(name = "estado")
- private boolean estado;
+ @Column(name = "estaBloqueado")
+ private boolean estaBloqueado; // estado
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "idAlmacen")
+ @JoinColumn(name = "almacen1_fk")
private Almacen origen;
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "idAlmacen")
+ @JoinColumn(name = "almacen2_fk")
private Almacen destino;
}
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TramoRuta.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TramoRuta.java
index 7c55588..a2d9241 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TramoRuta.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/TramoRuta.java
@@ -21,8 +21,8 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
@Entity
-@Table(name = "tramoRuta")
-@SQLDelete(sql = "UPDATE tramoRuta SET activo = 0 WHERE id = ?")
+@Table(name = "tramo_ruta")
+@SQLDelete(sql = "UPDATE tramo_ruta SET activo = 0 WHERE id = ?")
@Where(clause = "activo = 1")
@NoArgsConstructor
@AllArgsConstructor
@@ -30,11 +30,11 @@ import lombok.Setter;
public class TramoRuta {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idTramoRuta", updatable = false, nullable = false)
- private int idTramoRuta;
+ @Column(name = "id", updatable = false, nullable = false)
+ private int id;
@Column(name = "orden")
- private int orden; // idk
+ private int orden; // idk -> Rpta: # de orden en la ruta
@Column(name = "paquetesEntregar")
private int paquetesEntregar;
@@ -52,6 +52,8 @@ public class TramoRuta {
private Date horaLlegadaReal;
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "idTramo")
+ @JoinColumn(name = "tramo_fk")
private Tramo tramo;
+
+ // ruta_fk
}
diff --git a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Usuario.java b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Usuario.java
index b7902ba..9920c12 100644
--- a/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Usuario.java
+++ b/back/odiparback/src/main/java/pe/edu/pucp/odiparback/models/Usuario.java
@@ -28,8 +28,8 @@ import lombok.Setter;
public class Usuario {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "idUsuario", updatable = false, nullable = false)
- private int idUsuario;
+ @Column(name = "id", updatable = false, nullable = false)
+ private int id;
@Column(name = "usuario")
private String usuario;
@@ -50,6 +50,10 @@ public class Usuario {
private String correo;
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "idRol")
+ @JoinColumn(name = "creador_fk")
+ private Usuario creador;
+
+ @ManyToOne(fetch = FetchType.EAGER)
+ @JoinColumn(name = "rol_fk")
private Rol rol;
}
diff --git a/back/odiparback/src/main/resources/application.properties b/back/odiparback/src/main/resources/application.properties
index 8b13789..6c4feb8 100644
--- a/back/odiparback/src/main/resources/application.properties
+++ b/back/odiparback/src/main/resources/application.properties
@@ -1 +1,7 @@
-
+# MySQL
+spring.datasource.url=jdbc:mysql://tokumori.xyz:3306/odiparback
+spring.datasource.username=gabs
+spring.datasource.password=odiparfront123odiparfront123odiparfront123
+spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
+# com.mysql.cj.jdbc.Driver (new driver) \ No newline at end of file
diff --git a/back/sql/20220601dump.sampledata.sql b/back/sql/20220601dump.sampledata.sql
new file mode 100644
index 0000000..5042e32
--- /dev/null
+++ b/back/sql/20220601dump.sampledata.sql
@@ -0,0 +1,85 @@
+-- Adminer 4.7.9 MySQL dump
+
+SET NAMES utf8;
+SET time_zone = '+00:00';
+SET foreign_key_checks = 0;
+SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
+
+SET NAMES utf8mb4;
+
+TRUNCATE `almacen`;
+INSERT INTO `almacen` (`id`, `activo`, `ubigeo`, `departamento`, `provincia`, `latitud`, `longitud`, `esPrincipal`, `region_fk`) VALUES
+(1, 1, '10201', 'Amazonas', 'Bagua', -5.63906152, -78.53166353, 0, 3),
+(2, 1, '40101', 'Arequipa', 'Arequipa', -16.39881421, -71.537019649, 1, 1),
+(3, 1, '50901', 'Ayacucho', 'Sucre', -14.01125749, -73.83884087, 0, 2),
+(4, 1, '130101', 'La Libertad', 'Trujillo', -8.11176389, -79.02868652, 1, 1),
+(5, 1, '150101', 'Lima', 'Lima', -12.04591952, -77.03049615, 1, 1),
+(6, 1, '230101', 'Tacna', 'Tacna', -18.0137008, -70.2507964, 0, 1);
+
+TRUNCATE `averia`;
+
+TRUNCATE `camion`;
+INSERT INTO `camion` (`id`, `activo`, `placa`, `kilometraje`, `estado`, `tipoCamion_fk`) VALUES
+(1, 1, 'ETALLIC', 69420, 1, 1);
+
+TRUNCATE `cliente`;
+INSERT INTO `cliente` (`id`, `activo`, `nombreCompleto`, `dni`, `correo`, `telefono`) VALUES
+(1, 1, 'EmpresaAAA', '1234567890', '[email protected]', '123456789'),
+(2, 1, 'EmpresaBBB', '1234567890', '[email protected]', '123456789');
+
+TRUNCATE `pedido`;
+INSERT INTO `pedido` (`id`, `activo`, `fechaPedido`, `cantidad`, `plazoEntrega`, `estado`, `codigoPedido`, `almacen_fk`, `cliente_fk`, `usuario_fk`, `PTG_fk`) VALUES
+(2, 1, '2022-01-01 00:00:00', 10, 1, 0, '20220101_000001', 3, 1, 4, NULL);
+
+TRUNCATE `PTG`;
+INSERT INTO `PTG` (`id`, `activo`, `fechaGenerado`, `esSimulacion`, `usuario_fk`) VALUES
+(1, 1, '2022-06-01 05:10:47', 1, 1);
+
+TRUNCATE `region`;
+INSERT INTO `region` (`id`, `activo`, `nombre`) VALUES
+(1, 1, 'costa'),
+(2, 1, 'sierra'),
+(3, 1, 'selva');
+
+TRUNCATE `rol`;
+INSERT INTO `rol` (`id`, `activo`, `nombre`) VALUES
+(1, 1, 'superuser');
+
+TRUNCATE `ruta`;
+INSERT INTO `ruta` (`id`, `activo`, `fechaInicio`, `fechaFin`, `PTG_fk`, `camion_fk`) VALUES
+(1, 1, '2022-01-01 00:00:00', '2022-01-02 00:00:00', 1, 1);
+
+TRUNCATE `tipoAveria`;
+
+TRUNCATE `tipoCamion`;
+INSERT INTO `tipoCamion` (`id`, `activo`, `nombre`, `capacidad`) VALUES
+(1, 1, 'tipoA', 90),
+(2, 1, 'tipoB', 45),
+(3, 1, 'tipoC', 30);
+
+TRUNCATE `tramo`;
+INSERT INTO `tramo` (`id`, `activo`, `distancia`, `estaBloqueado`, `almacen1_fk`, `almacen2_fk`) VALUES
+(1, 1, 10, 0, 2, 5),
+(2, 1, 10, 0, 3, 5),
+(3, 1, 10, 0, 4, 5),
+(4, 1, 10, 0, 6, 5),
+(5, 1, 20, 0, 1, 4),
+(6, 1, 20, 0, 4, 1),
+(7, 1, 10, 0, 5, 2),
+(8, 1, 10, 0, 5, 3),
+(9, 1, 10, 0, 5, 4),
+(10, 1, 10, 0, 5, 6);
+
+TRUNCATE `tramo_ruta`;
+INSERT INTO `tramo_ruta` (`id`, `activo`, `orden`, `horaSalidaEst`, `horaLlegadaEst`, `horaSalidaReal`, `horaLlegadaReal`, `paquetesEntregar`, `ruta_fk`, `tramo_fk`) VALUES
+(1, 1, 1, '2022-01-01 10:00:00', '2022-01-01 15:00:00', NULL, NULL, 0, 1, 9),
+(2, 1, 2, '2022-01-01 16:00:00', '2022-01-01 21:00:00', NULL, NULL, 10, 1, 6);
+
+TRUNCATE `usuario`;
+INSERT INTO `usuario` (`id`, `activo`, `usuario`, `clave`, `nombre`, `apellido`, `dni`, `correo`, `creador_fk`, `rol_fk`) VALUES
+(1, 1, 'gabs', '*6AB7931FB2D104A478932D23AF4C7700D1A0C61A', 'Gabriela', 'Hernandez', '12345678', '[email protected]', NULL, 1),
+(2, 1, 'dayana', '*D279131EA232308E083B3EA192B78A0C15EA8701', 'Dayana', 'Alarcon', '12345678', '[email protected]', 1, 1),
+(3, 1, 'jannina', '*D279131EA232308E083B3EA192B84A0C15EA8701', 'Jannina', 'DeLosGodos', '12345678', '[email protected]', 1, 1),
+(4, 1, 'mitsuo', '*D279131EA232308E083B3EA192B74A0C15EA8701', 'Mitsuo', 'Tokumori', '12345678', '[email protected]', 1, 1);
+
+-- 2022-06-01 06:13:09
diff --git a/back/sql/20220601dump.tables+views.sql b/back/sql/20220601dump.tables+views.sql
new file mode 100644
index 0000000..7ff1c24
--- /dev/null
+++ b/back/sql/20220601dump.tables+views.sql
@@ -0,0 +1,245 @@
+-- Adminer 4.7.9 MySQL dump
+
+SET NAMES utf8;
+SET time_zone = '+00:00';
+SET foreign_key_checks = 0;
+SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
+
+SET NAMES utf8mb4;
+
+DROP TABLE IF EXISTS `almacen`;
+CREATE TABLE `almacen` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `ubigeo` varchar(10) NOT NULL,
+ `departamento` varchar(100) NOT NULL,
+ `provincia` varchar(100) NOT NULL,
+ `latitud` double NOT NULL,
+ `longitud` double NOT NULL,
+ `esPrincipal` int(11) NOT NULL,
+ `region_fk` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `region_fk` (`region_fk`),
+ CONSTRAINT `almacen_ibfk_1` FOREIGN KEY (`region_fk`) REFERENCES `region` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `averia`;
+CREATE TABLE `averia` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `descripcion` varchar(1000) NOT NULL,
+ `fechaRegistro` datetime NOT NULL,
+ `camion_fk` int(11) NOT NULL,
+ `tipoAveria_fk` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `camion_fk` (`camion_fk`),
+ KEY `tipoAveria_fk` (`tipoAveria_fk`),
+ CONSTRAINT `averia_ibfk_1` FOREIGN KEY (`camion_fk`) REFERENCES `camion` (`id`),
+ CONSTRAINT `averia_ibfk_2` FOREIGN KEY (`tipoAveria_fk`) REFERENCES `tipoAveria` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `camion`;
+CREATE TABLE `camion` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `placa` varchar(10) NOT NULL,
+ `kilometraje` double NOT NULL,
+ `estado` int(11) NOT NULL,
+ `tipoCamion_fk` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `tipoCamion_fk` (`tipoCamion_fk`),
+ CONSTRAINT `camion_ibfk_1` FOREIGN KEY (`tipoCamion_fk`) REFERENCES `tipoCamion` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `cliente`;
+CREATE TABLE `cliente` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `nombreCompleto` varchar(100) NOT NULL,
+ `dni` varchar(10) NOT NULL,
+ `correo` varchar(100) NOT NULL,
+ `telefono` varchar(20) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `pedido`;
+CREATE TABLE `pedido` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `fechaPedido` datetime NOT NULL,
+ `cantidad` int(11) NOT NULL,
+ `plazoEntrega` int(11) NOT NULL,
+ `estado` int(11) NOT NULL,
+ `codigoPedido` varchar(100) DEFAULT NULL,
+ `almacen_fk` int(11) NOT NULL,
+ `cliente_fk` int(11) NOT NULL,
+ `usuario_fk` int(11) NOT NULL,
+ `PTG_fk` int(11) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `usuario_fk` (`usuario_fk`),
+ KEY `PTG_fk` (`PTG_fk`),
+ KEY `cliente_fk` (`cliente_fk`),
+ KEY `almacen_fk` (`almacen_fk`),
+ CONSTRAINT `pedido_ibfk_1` FOREIGN KEY (`usuario_fk`) REFERENCES `usuario` (`id`),
+ CONSTRAINT `pedido_ibfk_2` FOREIGN KEY (`PTG_fk`) REFERENCES `PTG` (`id`),
+ CONSTRAINT `pedido_ibfk_3` FOREIGN KEY (`cliente_fk`) REFERENCES `cliente` (`id`),
+ CONSTRAINT `pedido_ibfk_4` FOREIGN KEY (`almacen_fk`) REFERENCES `almacen` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `PTG`;
+CREATE TABLE `PTG` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `fechaGenerado` datetime NOT NULL,
+ `esSimulacion` int(11) NOT NULL,
+ `usuario_fk` int(11) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `usuario_fk` (`usuario_fk`),
+ CONSTRAINT `PTG_ibfk_1` FOREIGN KEY (`usuario_fk`) REFERENCES `usuario` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `region`;
+CREATE TABLE `region` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `nombre` varchar(100) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `rol`;
+CREATE TABLE `rol` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `nombre` varchar(100) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `ruta`;
+CREATE TABLE `ruta` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `fechaInicio` datetime NOT NULL,
+ `fechaFin` datetime NOT NULL,
+ `PTG_fk` int(11) NOT NULL,
+ `camion_fk` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `PTG_fk` (`PTG_fk`),
+ KEY `camion_fk` (`camion_fk`),
+ CONSTRAINT `ruta_ibfk_1` FOREIGN KEY (`PTG_fk`) REFERENCES `PTG` (`id`),
+ CONSTRAINT `ruta_ibfk_2` FOREIGN KEY (`camion_fk`) REFERENCES `camion` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `tipoAveria`;
+CREATE TABLE `tipoAveria` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `nombre` int(11) NOT NULL,
+ `duracion` int(11) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `tipoCamion`;
+CREATE TABLE `tipoCamion` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `nombre` varchar(100) NOT NULL,
+ `capacidad` int(11) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `tramo`;
+CREATE TABLE `tramo` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `distancia` double NOT NULL,
+ `estaBloqueado` int(11) NOT NULL,
+ `almacen1_fk` int(11) NOT NULL,
+ `almacen2_fk` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `almacen1_fk` (`almacen1_fk`),
+ KEY `almacen2_fk` (`almacen2_fk`),
+ CONSTRAINT `tramo_ibfk_1` FOREIGN KEY (`almacen1_fk`) REFERENCES `almacen` (`id`),
+ CONSTRAINT `tramo_ibfk_2` FOREIGN KEY (`almacen2_fk`) REFERENCES `almacen` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `tramo_ruta`;
+CREATE TABLE `tramo_ruta` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `orden` int(11) NOT NULL,
+ `horaSalidaEst` datetime NOT NULL,
+ `horaLlegadaEst` datetime NOT NULL,
+ `horaSalidaReal` datetime DEFAULT NULL,
+ `horaLlegadaReal` datetime DEFAULT NULL,
+ `paquetesEntregar` int(11) NOT NULL,
+ `ruta_fk` int(11) NOT NULL,
+ `tramo_fk` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `ruta_fk` (`ruta_fk`),
+ KEY `tramo_fk` (`tramo_fk`),
+ CONSTRAINT `tramo_ruta_ibfk_1` FOREIGN KEY (`ruta_fk`) REFERENCES `ruta` (`id`),
+ CONSTRAINT `tramo_ruta_ibfk_2` FOREIGN KEY (`tramo_fk`) REFERENCES `tramo` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP TABLE IF EXISTS `usuario`;
+CREATE TABLE `usuario` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `activo` int(11) NOT NULL,
+ `usuario` varchar(100) NOT NULL,
+ `clave` varchar(100) NOT NULL,
+ `nombre` varchar(100) NOT NULL,
+ `apellido` varchar(100) NOT NULL,
+ `dni` varchar(10) NOT NULL,
+ `correo` varchar(100) NOT NULL,
+ `creador_fk` int(11) DEFAULT NULL,
+ `rol_fk` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `creador_fk` (`creador_fk`),
+ KEY `rol_fk` (`rol_fk`),
+ CONSTRAINT `usuario_ibfk_2` FOREIGN KEY (`creador_fk`) REFERENCES `usuario` (`id`),
+ CONSTRAINT `usuario_ibfk_3` FOREIGN KEY (`rol_fk`) REFERENCES `usuario` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+DROP VIEW IF EXISTS `v_almacen`;
+CREATE TABLE `v_almacen` (`ubigeo` varchar(10), `departamento` varchar(100), `provincia` varchar(100), `latitud` double, `longitud` double, `esPrincipal` int(11), `region` varchar(100));
+
+
+DROP VIEW IF EXISTS `v_camion`;
+CREATE TABLE `v_camion` (`id` int(11), `placa` varchar(10), `kilometraje` double, `estado` int(11), `tipo` varchar(100), `capacidad` int(11));
+
+
+DROP VIEW IF EXISTS `v_pedido`;
+CREATE TABLE `v_pedido` (`cliente` varchar(100), `RUC` varchar(10), `ubigeo` varchar(10), `provincia` varchar(100), `cantidad` int(11), `fechaPedido` datetime, `plazoEntrega` int(11), `estado` int(11), `URL_pedido` varchar(100), `registrado por` varchar(100));
+
+
+DROP VIEW IF EXISTS `v_usuario`;
+CREATE TABLE `v_usuario` (`usuario` varchar(100), `nombre` varchar(100), `apellido` varchar(100), `dni` varchar(10), `correo` varchar(100), `registered by` varchar(100), `rol` varchar(100));
+
+
+DROP TABLE IF EXISTS `v_almacen`;
+CREATE ALGORITHM=UNDEFINED DEFINER=`gabs`@`%.%.%.%` SQL SECURITY DEFINER VIEW `v_almacen` AS select `a`.`ubigeo` AS `ubigeo`,`a`.`departamento` AS `departamento`,`a`.`provincia` AS `provincia`,`a`.`latitud` AS `latitud`,`a`.`longitud` AS `longitud`,`a`.`esPrincipal` AS `esPrincipal`,`r`.`nombre` AS `region` from (`almacen` `a` join `region` `r` on(`a`.`region_fk` = `r`.`id`)) where a.activo = 1;
+
+DROP TABLE IF EXISTS `v_camion`;
+CREATE ALGORITHM=UNDEFINED DEFINER=`gabs`@`%.%.%.%` SQL SECURITY DEFINER VIEW `v_camion` AS select `c`.`id` AS `id`,`c`.`placa` AS `placa`,`c`.`kilometraje` AS `kilometraje`,`c`.`estado` AS `estado`,`tc`.`nombre` AS `tipo`,`tc`.`capacidad` AS `capacidad` from (`camion` `c` join `tipoCamion` `tc` on(`c`.`tipoCamion_fk` = `tc`.`id`)) where c.activo = 1;
+
+DROP TABLE IF EXISTS `v_pedido`;
+CREATE ALGORITHM=UNDEFINED DEFINER=`gabs`@`%.%.%.%` SQL SECURITY DEFINER VIEW `v_pedido` AS select `cli`.`nombreCompleto` AS `cliente`,`cli`.`dni` AS `RUC`,`alm`.`ubigeo` AS `ubigeo`,`alm`.`provincia` AS `provincia`,`ped`.`cantidad` AS `cantidad`,`ped`.`fechaPedido` AS `fechaPedido`,`ped`.`plazoEntrega` AS `plazoEntrega`,`ped`.`estado` AS `estado`,`ped`.`codigoPedido` AS `URL_pedido`,`usu`.`usuario` AS `registrado por` from (((`pedido` `ped` join `cliente` `cli` on(`ped`.`cliente_fk` = `cli`.`id`)) join `usuario` `usu` on(`ped`.`usuario_fk` = `usu`.`id`)) join `almacen` `alm` on(`ped`.`almacen_fk` = `alm`.`id`)) where ped.activo = 1;
+
+DROP TABLE IF EXISTS `v_usuario`;
+CREATE ALGORITHM=UNDEFINED DEFINER=`gabs`@`%.%.%.%` SQL SECURITY DEFINER VIEW `v_usuario` AS select `u`.`usuario` AS `usuario`,`u`.`nombre` AS `nombre`,`u`.`apellido` AS `apellido`,`u`.`dni` AS `dni`,`u`.`correo` AS `correo`,`u2`.`nombre` AS `registered by`,`r`.`nombre` AS `rol` from ((`usuario` `u` left join `usuario` `u2` on(`u`.`creador_fk` = `u2`.`id`)) join `rol` `r` on(`u`.`rol_fk` = `r`.`id`)) where u.activo = 1;
+
+-- 2022-06-01 06:30:20
diff --git a/back/sql/some_views_and_selects.sql b/back/sql/some_views_and_selects.sql
new file mode 100644
index 0000000..e5306e3
--- /dev/null
+++ b/back/sql/some_views_and_selects.sql
@@ -0,0 +1,47 @@
+-- v_almacen
+select a.ubigeo, a.departamento, a.provincia, a.latitud, a.longitud,
+ a.esPrincipal, r.nombre AS region
+ from almacen a join region r on a.region_fk = r.id;
+
+-- v_camion
+select c.id, c.placa, c.kilometraje, c.estado,
+ tc.nombre AS 'tipo', tc.capacidad
+ from camion c join tipoCamion tc on c.tipoCamion_fk = tc.id;
+
+-- v_pedido
+select cli.nombreCompleto AS cliente, cli.dni AS RUC,
+ alm.ubigeo, alm.provincia,
+ ped.cantidad, ped.fechaPedido, ped.plazoEntrega, ped.estado,
+ ped.codigoPedido AS URL_pedido,
+ usu.usuario AS 'registrado por'
+ from pedido ped join cliente cli on ped.cliente_fk = cli.id
+ inner join usuario usu on ped.usuario_fk = usu.id
+ inner join almacen alm on ped.almacen_fk = alm.id;
+
+-- v_tramo
+select t.id as 'tramo', t.distancia, t.estaBloqueado,
+ a1.id, a1.provincia, a2.id, a2.provincia
+ from tramo t inner join almacen a1 on t.almacen1_fk = a1.id
+ inner join almacen a2 on t.almacen2_fk = a2.id
+ order by a1.id;
+
+-- v_usuario
+select u.usuario, u.nombre, u.apellido, u.dni, u.correo,
+ u2.nombre AS 'registered by', r.nombre AS rol
+ from usuario u left join usuario u2 on u.creador_fk = u2.id
+ inner join rol r on u.rol_fk = r.id;
+
+-- PTG (lista de rutas)
+
+-- "Select de ruta": Listado de tramos de la ruta con id=1
+select t_r.orden, r.fechaInicio, r.fechaFin,
+ a1.provincia, a2.provincia, t.distancia,
+ c.placa, t_r.paquetesEntregar
+ from ruta r inner join tramo_ruta t_r on r.id = t_r.ruta_fk
+ inner join tramo t on t.id = t_r.ruta_fk
+ inner join almacen a1 on t.almacen1_fk = a1.id
+ inner join almacen a2 on t.almacen2_fk = a2.id
+
+ inner join camion c on r.camion_fk = c.id
+ where r.id = 1
+ order by t_r.orden;
diff --git a/back/sql/ss_20220531_221843.png b/back/sql/ss_20220531_221843.png
new file mode 100644
index 0000000..fbec2c2
--- /dev/null
+++ b/back/sql/ss_20220531_221843.png
Binary files differ
diff --git a/front/odiparpack/app/actions/actionTypes.js b/front/odiparpack/app/actions/actionTypes.js
index 08986f2..8fd305f 100644
--- a/front/odiparpack/app/actions/actionTypes.js
+++ b/front/odiparpack/app/actions/actionTypes.js
@@ -82,3 +82,12 @@ 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';
+//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/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..8a011f0
--- /dev/null
+++ b/front/odiparpack/app/actions/pedido.js
@@ -0,0 +1,19 @@
+import {
+ getPedidosAPI
+} from 'ba-api/pedido';
+import * as types from './actionTypes'
+
+export const setPedidos = (payload) => ({
+ type: types.LISTA_PEDIDO,
+ payload
+});
+
+export const getPedidos = () => async dispatch => {
+ try{
+ const res = await getPedidosAPI();
+ dispatch(setPedidos({res}))
+ return res;
+ }catch(e){
+ console.log(e)
+ }
+}
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/brand.js b/front/odiparpack/app/api/brand.js
index 883eed5..216e180 100644
--- a/front/odiparpack/app/api/brand.js
+++ b/front/odiparpack/app/api/brand.js
@@ -1,8 +1,8 @@
module.exports = {
- name: 'Boss Ultimate',
- desc: 'Boss Ultimate - Material Admin Dashboard',
- prefix: 'boss',
- footerText: 'Boss Ultimate All Rights Reserved 2018',
- logoText: 'Boss Ultimate',
+ name: 'OdiparPack',
+ desc: 'OdiparPack - Planeamiento de rutas',
+ prefix: 'odipk',
+ footerText: 'OdiparPack All Rights Reserved 2022',
+ logoText: 'OdiparPack',
needLogin: false
};
diff --git a/front/odiparpack/app/api/dummyContents.js b/front/odiparpack/app/api/dummyContents.js
index 104cdfd..2f839fb 100644
--- a/front/odiparpack/app/api/dummyContents.js
+++ b/front/odiparpack/app/api/dummyContents.js
@@ -1,7 +1,7 @@
import avatarApi from './avatars';
const dummyContent = {
user: {
- name: 'John Doe',
+ name: 'Mitsuo Tokumori',
title: 'Administrator',
avatar: avatarApi[6]
},
diff --git a/front/odiparpack/app/api/menu.js b/front/odiparpack/app/api/menu.js
index dce8f58..637424a 100644
--- a/front/odiparpack/app/api/menu.js
+++ b/front/odiparpack/app/api/menu.js
@@ -1,454 +1,51 @@
module.exports = [
{
- key: 'dashboard',
- name: 'Dashboard',
- icon: 'dashboard',
- child: [
- {
- key: 'dashboard_v1',
- name: 'Dashboard V1',
- link: '/app'
- },
- {
- key: 'dashboard_v2',
- name: 'Dashboard V2',
- link: '/app/dashboard-v2'
- },
- ]
+ key: 'seguimiento',
+ name: 'Seguimiento',
+ icon: 'near_me',
+ link: '/app/dashboard-v2',
+ child: [ ]
},
{
- key: 'layouts',
- name: 'Layouts',
- icon: 'view_column',
- child: [
- {
- key: 'grid',
- name: 'Grid',
- link: '/app/layouts/grid'
- },
- {
- key: 'application_layout',
- name: 'App Layout',
- link: '/app/layouts/app-layout'
- },
- {
- key: 'responsive',
- name: 'Responsive',
- link: '/app/layouts/responsive'
- }
- ]
+ key: 'pedidos',
+ name: 'Pedidos',
+ icon: 'inventory_2',
+ link: '/app/pedidos',
+ child: [ ]
},
{
- key: 'tables',
- name: 'Tables',
- icon: 'grid_on',
- child: [
- {
- key: 'basic_table',
- name: 'Basic Table',
- link: '/app/tables/basic-table'
- },
- {
- key: 'data_table',
- name: 'Data Table',
- link: '/app/tables/data-table'
- },
- {
- key: 'tree_table',
- name: 'Tree Table',
- link: '/app/tables/tree-table'
- },
- {
- key: 'crud_table',
- name: 'CRUD Table',
- link: '/app/tables/crud-table'
- },
- {
- key: 'table_playground',
- name: 'Table Playgound',
- link: '/app/tables/table-playground'
- },
- ]
+ key: 'camiones',
+ name: 'Camiones',
+ icon: 'local_shipping',
+ link: '/app/layouts/grid',
+ child: [ ]
},
{
- key: 'forms',
- name: 'Form Button',
- icon: 'border_color',
- child: [
- {
- key: 'reduxform',
- name: 'Redux Form',
- link: '/app/forms/reduxform'
- },
- {
- key: 'datetimepicker',
- name: 'Date Time Picker',
- link: '/app/forms/date-time-picker'
- },
- {
- key: 'checkbox_radio',
- name: 'Checkbox & Radio',
- link: '/app/forms/checkbox-radio'
- },
- {
- key: 'switches',
- name: 'Switches',
- link: '/app/forms/switches'
- },
- {
- key: 'selectbox',
- name: 'Select',
- link: '/app/forms/selectbox'
- },
- {
- key: 'buttons',
- name: 'Buttons',
- link: '/app/forms/buttons'
- },
- {
- key: 'textfields',
- name: 'Textfields',
- link: '/app/forms/textfields'
- },
- {
- key: 'autocomplete',
- name: 'Autocomplete & Tag',
- link: '/app/forms/autocomplete'
- },
- {
- key: 'slider',
- name: 'Slider Range',
- link: '/app/forms/slider-range'
- },
- {
- key: 'upload',
- name: 'Upload',
- link: '/app/forms/upload'
- },
- {
- key: 'ratting',
- name: 'Ratting',
- link: '/app/forms/ratting'
- },
- {
- key: 'texteditor',
- name: 'WYSIWYG Editor',
- link: '/app/forms/wysiwyg-editor'
- },
- ]
+ key: 'almacenes',
+ name: 'Almacenes',
+ icon: 'warehouse',
+ link: '/app/tables/crud-table',
+ child: [ ]
},
{
- key: 'ui',
- name: 'UI Elements',
- icon: 'flag',
- child: [
- {
- key: 'icons',
- name: 'Icons',
- link: '/app/ui/icons'
- },
- {
- key: 'avatars',
- name: 'Avatars',
- link: '/app/ui/avatars'
- },
- {
- key: 'badges',
- name: 'Badges',
- link: '/app/ui/badges'
- },
- {
- key: 'card_papper',
- name: 'Card & Papper',
- link: '/app/ui/card-papper'
- },
- {
- key: 'dialog_modal',
- name: 'Dialog & Modal',
- link: '/app/ui/dialog-modal'
- },
- {
- key: 'drawer_menu',
- name: 'Drawer & Menu',
- link: '/app/ui/drawer-menu'
- },
- {
- key: 'tab',
- name: 'Tabs Navigation',
- link: '/app/ui/tabs'
- },
- {
- key: 'accordion',
- name: 'Accordion',
- link: '/app/ui/accordion'
- },
- {
- key: 'image_gird',
- name: 'Image Grid Gallery',
- link: '/app/ui/image-grid'
- },
- {
- key: 'list_divider',
- name: 'List & Divider',
- link: '/app/ui/list'
- },
- {
- key: 'popover_tooltip',
- name: 'Popover & Tooltip',
- link: '/app/ui/popover-tooltip'
- },
- {
- key: 'progress',
- name: 'Progress & Spinners',
- link: '/app/ui/progress'
- },
- {
- key: 'tags',
- name: 'Tags',
- link: '/app/ui/tags'
- },
- {
- key: 'steppers',
- name: 'Steppers',
- link: '/app/ui/steppers'
- },
- {
- key: 'notification',
- name: 'Notification',
- link: '/app/ui/notification'
- },
- {
- key: 'breadcrumbs',
- name: 'Breadcrumbs',
- link: '/app/ui/breadcrumbs'
- },
- {
- key: 'dividers',
- name: 'Dividers',
- link: '/app/ui/dividers'
- },
- {
- key: 'typography',
- name: 'Typography',
- link: '/app/ui/typography'
- },
- {
- key: 'slider_carousel',
- name: 'Slider & Carousel',
- link: '/app/ui/slider-carousel'
- },
- {
- key: 'paginations',
- name: 'Paginations',
- link: '/app/ui/paginations'
- },
- ]
+ key: 'red_tramos',
+ name: 'Red de Tramos',
+ icon: 'location_on',
+ link: '/app/forms/reduxform',
+ child: [ ]
},
{
- key: 'charts',
- name: 'Charts',
- icon: 'insert_chart',
- child: [
- {
- key: 'line_charts',
- name: 'Line Charts',
- link: '/app/charts/line-charts'
- },
- {
- key: 'bar_charts',
- name: 'Bar Charts',
- link: '/app/charts/bar-charts'
- },
- {
- key: 'area_charts',
- name: 'Area Charts',
- link: '/app/charts/area-charts'
- },
- {
- key: 'pie_charts',
- name: 'Pie & Donuts Charts',
- link: '/app/charts/pie-charts'
- },
- {
- key: 'radar_charts',
- name: 'Radar Charts',
- link: '/app/charts/radar-charts'
- },
- {
- key: 'scatter_charts',
- name: 'Scatter Charts',
- link: '/app/charts/scatter-charts'
- },
- {
- key: 'compossed_charts',
- name: 'Compossed Charts',
- link: '/app/charts/compossed-chart'
- },
- {
- key: 'responsive_charts',
- name: 'Responsive Charts',
- link: '/app/charts/responsive-chart'
- },
- ]
+ key: 'otros',
+ name: 'Otros parámetros',
+ icon: 'settings',
+ link: '/app/ui/icons',
+ child: [ ]
},
{
- key: 'apps',
- name: 'Apps',
- icon: 'bubble_chart',
- child: [
- {
- key: 'social_media',
- name: 'Social Media',
- link: '/app/pages/social-media'
- },
- {
- key: 'ecommerce',
- name: 'Ecommerce',
- link: '/app/pages/ecommerce'
- },
- {
- key: 'contact',
- name: 'Contact',
- link: '/app/pages/contact'
- },
- {
- key: 'calendar',
- name: 'Calendar',
- link: '/app/pages/calendar'
- },
- {
- key: 'email',
- name: 'Email',
- link: '/app/pages/email'
- },
- {
- key: 'chat',
- name: 'Chat',
- link: '/app/pages/chat'
- },
- ]
- },
- {
- key: 'pages',
- name: 'Pages',
- icon: 'library_books',
- child: [
- {
- key: 'user_profile',
- name: 'User Profile',
- link: '/app/pages/user-profile'
- },
- {
- key: 'gallery',
- name: 'Photo Gallery',
- link: '/app/pages/photo-gallery'
- },
- {
- key: 'not_found_page',
- name: 'Not Found Page',
- link: '/app/pages/not-found'
- },
- {
- key: 'error_page',
- name: 'Error Page',
- link: '/app/pages/error'
- },
- {
- key: 'maintenance',
- name: 'Maintenance',
- link: '/maintenance'
- },
- {
- key: 'login',
- name: 'Login',
- link: '/login'
- },
- {
- key: 'register',
- name: 'Register',
- link: '/register'
- },
- {
- key: 'reset',
- name: 'Reset Password',
- link: '/reset-password'
- },
- {
- key: 'lock',
- name: 'Lock Screen',
- link: '/lock-screen'
- },
- {
- key: 'blank',
- name: 'Blank Page',
- link: '/app/pages/blank-page'
- },
- {
- key: 'help_support',
- name: 'Help & Support',
- link: '/app/pages/help-support'
- },
- ]
- },
- {
- key: 'maps',
- name: 'Maps',
- icon: 'maps',
- child: [
- {
- key: 'map_marker',
- name: 'Map Marker',
- link: '/app/maps/map-marker'
- },
- {
- key: 'map_direction',
- name: 'Map Direction',
- link: '/app/maps/map-direction'
- },
- {
- key: 'map_searchbox',
- name: 'Map with Searchbox',
- link: '/app/maps/map-searchbox'
- },
- {
- key: 'map_traffic',
- name: 'Traffic Indicator',
- link: '/app/maps/map-traffic'
- },
- {
- key: 'street_view',
- name: 'Street View',
- link: '/app/maps/street-view'
- },
- ]
- },
- {
- key: 'menu_levels',
- name: 'Menu Levels',
- icon: 'sort',
- child: [
- {
- key: 'level_1',
- name: 'Level 1',
- link: '/#'
- },
- {
- key: 'level_2',
- keyParent: 'menu_levels',
- name: 'Level 2',
- child: [
- {
- key: 'sub_menu_1',
- name: 'Sub Menu 1',
- link: '/#'
- },
- {
- key: 'sub_menu_2',
- name: 'Sub Menu 2',
- link: '/#'
- },
- ]
- },
- ]
+ key: 'simulacion',
+ name: 'Simulación',
+ icon: 'fast_forward',
+ link: '/app/pages/calendar',
+ child: [ ]
}
-];
+]; \ 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
new file mode 100644
index 0000000..63d6e2e
--- /dev/null
+++ b/front/odiparpack/app/api/pedido.js
@@ -0,0 +1,18 @@
+import axios from 'axios';
+import { apiGet } from '../utils/odipar/api';
+
+//GET APIS
+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/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/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(
<Provider store={store}>
diff --git a/front/odiparpack/app/components/Forms/ReduxFormMUI.js b/front/odiparpack/app/components/Forms/ReduxFormMUI.js
index 383a717..285543f 100644
--- a/front/odiparpack/app/components/Forms/ReduxFormMUI.js
+++ b/front/odiparpack/app/components/Forms/ReduxFormMUI.js
@@ -4,6 +4,14 @@ import TextField from '@material-ui/core/TextField';
import Select from '@material-ui/core/Select';
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'
+moment.locale('es');
/* Textfield */
export const TextFieldRedux = ({ meta: { touched, error }, input, ...rest }) => (
@@ -67,3 +75,23 @@ SwitchRedux.propTypes = {
input: PropTypes.object.isRequired,
};
/* End */
+
+export const DatePickerRedux = ({ input, label, readonly}) => (
+
+ <MuiPickersUtilsProvider locale={'es'} utils={MomentUtils}>
+ <DateTimePicker
+ format="DD/MM/YYYY hh:mm A"
+ autoOk
+ onChange={date => input.onChange(moment(date).format("DD/MM/YYYY hh:mm A"))}
+ value={input.value ? moment(input.value,"DD/MM/YYYY hh:mm A"): null}
+ label={label}
+ readOnly = {readonly}
+ disabled = {readonly}
+ />
+ </MuiPickersUtilsProvider>
+);
+
+export const EstadoRedux = ({input, label}) => {
+ const value = input.value? input.value : 0
+ return etiqueta("etiq_pedido", value)
+}
diff --git a/front/odiparpack/app/components/Header/Header.js b/front/odiparpack/app/components/Header/Header.js
index e1d0bf5..2b86b41 100644
--- a/front/odiparpack/app/components/Header/Header.js
+++ b/front/odiparpack/app/components/Header/Header.js
@@ -36,7 +36,7 @@ function Header(props) {
>
<MenuIcon />
</IconButton>
- <div className={classes.flex}>
+ {/* <div className={classes.flex}>
<div className={classes.wrapper}>
<div className={classes.search}>
<SearchIcon />
@@ -46,8 +46,8 @@ function Header(props) {
</div>
<Hidden xsDown>
<span className={classes.separatorV} />
- </Hidden>
- <UserMenu />
+ </Hidden>
+ <UserMenu />*/}
</Toolbar>
</AppBar>
);
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 (
<Snackbar
- anchorOrigin={{
- vertical: 'bottom',
- horizontal: 'left',
- }}
open={message !== ''}
autoHideDuration={3000}
onClose={() => this.handleClose()}
ContentProps={{
'aria-describedby': 'message-id',
}}
- message={message}
+ anchorOrigin={{
+ vertical: 'top',
+ horizontal: 'right',
+ }}
+
+ >
+ <SnackbarContent
+ className={classNames(classes[variant])}
+ message={(
+ <span id="client-snackbar" className={classes.message}>
+ <Icon className={classNames(classes.icon, classes.iconVariant)} />
+ {message}
+ </span>
+ )}
action={[
<IconButton
key="close"
@@ -42,10 +92,11 @@ class Notification extends React.Component {
className={classes.close}
onClick={() => this.handleClose()}
>
- <CloseIcon />
+ <CloseIcon className={classes.icon}/>
</IconButton>,
]}
/>
+ </Snackbar>
);
}
}
@@ -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/Odipar/EtiquetaData.js b/front/odiparpack/app/components/Odipar/EtiquetaData.js
new file mode 100644
index 0000000..a2f262d
--- /dev/null
+++ b/front/odiparpack/app/components/Odipar/EtiquetaData.js
@@ -0,0 +1,80 @@
+//Pedido
+export const pedido = {
+ pendiente:{
+ text: "Pendiente",
+ color: "#FFB74D",
+ icon: false
+ },
+ enCamino: {
+ text: "En Camino",
+ 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 = {
+ disponible : {
+ text: "Disponible",
+ color: "#81C784",
+ icon: false
+ },
+ enReparto: {
+ text: "En Reparto",
+ color: "#64B5F6",
+ icon: false
+ },
+ mantenimiento:{
+ text: "Mantenimiento",
+ color: "#FFB74D",
+ icon: false
+ },
+ cancelado: {
+ text: "Inhabilitado",
+ color: "#E57373",
+ icon: false
+ }
+ }
+
+ //Bloqueos
+ export const bloqueo = {
+ desbloqueado: {
+ text: "Disponible",
+ color: "#81C784",
+ icon: false
+ },
+ bloqueado:{
+ text: "Bloqueado",
+ color: "#E57373",
+ icon: false
+ }
+ }
+
+ //Almacen
+ export const almacen = {
+ noPrincipal: {
+ text: "Pequeño",
+ color: "#DED8D8",
+ icon: 10
+ },
+ principal:{
+ text: "Principal",
+ 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
new file mode 100644
index 0000000..b6fb49d
--- /dev/null
+++ b/front/odiparpack/app/components/Odipar/common.js
@@ -0,0 +1,43 @@
+import React from "react"
+import { Chip } from "@material-ui/core";
+import { pedido, camion, bloqueo, almacen } from './EtiquetaData'
+import Brightness1Icon from '@material-ui/icons/Brightness1';
+
+export const etiquetaStyle = color => ({
+ fontWeight: 'bold',
+ color: '#FFF',
+ backgroundColor: color
+});
+
+
+//Etiquetas
+export function etiqueta(tipo , estado) { // eslint-disable-line
+ let {color, text, icon} = ""
+ switch(tipo){
+ case 'etiq_pedido':
+ text = pedido[Object.keys(pedido)[estado]].text
+ color = pedido[Object.keys(pedido)[estado]].color
+ break;
+ case 'etiq_camion':
+ text = camion[Object.keys(camion)[estado]].text
+ color = camion[Object.keys(camion)[estado]].color
+ break;
+ case 'etiq_bloqueo':
+ text = bloqueo[Object.keys(bloqueo)[estado]].text
+ color = bloqueo[Object.keys(bloqueo)[estado]].color
+ break;
+ case 'etiq_alma':
+ 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;
+ }
+
+ return (
+ tipo == "etiq_alma" ?
+ <Chip label={text} icon = {<Brightness1Icon style={{ fontSize: icon, color: "#B1ABAB" }}/>} style={{fontWeight: 'bold', backgroundColor: color}}/> :
+ <Chip label={text} style={etiquetaStyle(color)}/>
+ )
+} \ No newline at end of file
diff --git a/front/odiparpack/app/components/Panel/FloatingPanel.js b/front/odiparpack/app/components/Panel/FloatingPanel.js
index 675166a..f0a0e6b 100644
--- a/front/odiparpack/app/components/Panel/FloatingPanel.js
+++ b/front/odiparpack/app/components/Panel/FloatingPanel.js
@@ -82,7 +82,7 @@ FloatingPanel.propTypes = {
};
FloatingPanel.defaultProps = {
- title: 'Add New Item',
+ title: 'Añadir nuevo',
extraSize: false,
};
diff --git a/front/odiparpack/app/components/Sidebar/MainMenuSimple.js b/front/odiparpack/app/components/Sidebar/MainMenuSimple.js
new file mode 100644
index 0000000..18ac8fd
--- /dev/null
+++ b/front/odiparpack/app/components/Sidebar/MainMenuSimple.js
@@ -0,0 +1,96 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { withStyles } from '@material-ui/core/styles';
+import classNames from 'classnames';
+import { bindActionCreators } from 'redux';
+import { connect } from 'react-redux';
+import { NavLink } from 'react-router-dom';
+// Menu Object
+import MenuContent from 'odi-utils/menu';
+import { List, ListItem, ListItemIcon, ListItemText, Collapse, Icon } from '@material-ui/core';
+import styles from './sidebar-jss';
+
+function sortByKey(array, key) {
+ return array.sort((a, b) => {
+ const x = a[key]; const y = b[key];
+ return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+ });
+}
+
+const LinkBtn = React.forwardRef(function LinkBtn(props, ref) { // eslint-disable-line
+ return <NavLink to={props.to} {...props} innerRef={ref} />; // eslint-disable-line
+});
+
+function MainMenuSimple(props) {
+ const {
+ classes,
+ toggleDrawerOpen,
+ loadTransition,
+ openSubMenu,
+ open,
+ } = props;
+
+ const handleClick = () => {
+ //toggleDrawerOpen();
+ loadTransition(false);
+ };
+
+ const getMenus = menuArray => menuArray.map((item, index) => {
+ return (
+ <div key={index.toString()}>
+ <ListItem
+ button
+ exact
+ className={classNames(classes.head, open.indexOf(item.key) > -1 ? classes.opened : '')}
+ activeClassName={classes.active}
+ component={LinkBtn}
+ to={item.link}
+ onClick={handleClick}
+ timeout="auto"
+ unmountOnExit
+ >
+ {item.icon
+ && (
+ <ListItemIcon className={classes.iconWrapper}>
+ <Icon className={classes.icon}>{item.icon}</Icon>
+ </ListItemIcon>
+ )
+ }
+ <ListItemText classes={{ primary: classes.primary }} variant="inset" primary={item.name} />
+ </ListItem>
+ </div>
+ );
+ });
+ return (
+ <div>
+ {getMenus(MenuContent)}
+ </div>
+ );
+}
+
+MainMenuSimple.propTypes = {
+ classes: PropTypes.object.isRequired,
+ open: PropTypes.object.isRequired,
+ openSubMenu: PropTypes.func.isRequired,
+ toggleDrawerOpen: PropTypes.func.isRequired,
+ loadTransition: PropTypes.func.isRequired,
+};
+
+const openAction = (key, keyParent) => ({ type: 'OPEN_SUBMENU', key, keyParent });
+const reducer = 'ui';
+
+const mapStateToProps = state => ({
+ force: state, // force active class for sidebar menu
+ open: state.getIn([reducer, 'subMenuOpen'])
+});
+
+const mapDispatchToProps = dispatch => ({
+ openSubMenu: bindActionCreators(openAction, dispatch)
+});
+
+const MainMenuMapped = connect(
+ mapStateToProps,
+ mapDispatchToProps
+)(MainMenuSimple);
+
+export default withStyles(styles)(MainMenuMapped);
diff --git a/front/odiparpack/app/components/Sidebar/Sidebar.js b/front/odiparpack/app/components/Sidebar/Sidebar.js
index 01de4ec..b4f5626 100644
--- a/front/odiparpack/app/components/Sidebar/Sidebar.js
+++ b/front/odiparpack/app/components/Sidebar/Sidebar.js
@@ -4,10 +4,10 @@ import { withStyles } from '@material-ui/core/styles';
import classNames from 'classnames';
import brand from 'ba-api/brand';
import dummy from 'ba-api/dummyContents';
-import logo from 'ba-images/logo.svg';
-import { Hidden, Drawer, SwipeableDrawer, List, Divider, Avatar } from '@material-ui/core';
-import MainMenu from './MainMenu';
-import OtherMenu from './OtherMenu';
+import logo from 'ba-images/logo.png';
+import { Hidden, Drawer, SwipeableDrawer, Avatar } from '@material-ui/core';
+import MainMenuSimple from './MainMenuSimple';
+//import OtherMenu from './OtherMenu';
import styles from './sidebar-jss';
const MenuContent = props => {
@@ -38,11 +38,11 @@ const MenuContent = props => {
</div>
</div>
<div className={classes.menuContainer}>
- <MainMenu loadTransition={loadTransition} toggleDrawerOpen={toggleDrawerOpen} />
- <Divider className={classes.divider} />
+ <MainMenuSimple loadTransition={loadTransition} toggleDrawerOpen={toggleDrawerOpen} />
+ {/* <Divider className={classes.divider} />
<List>
<OtherMenu toggleDrawerOpen={toggleDrawerOpen} />
- </List>
+ </List> */}
</div>
</div>
);
diff --git a/front/odiparpack/app/components/Sidebar/sidebar-jss.js b/front/odiparpack/app/components/Sidebar/sidebar-jss.js
index e9bf4f6..95fb2b2 100644
--- a/front/odiparpack/app/components/Sidebar/sidebar-jss.js
+++ b/front/odiparpack/app/components/Sidebar/sidebar-jss.js
@@ -76,11 +76,14 @@ const styles = theme => ({
}
},
avatar: {
- margin: 10,
+ marginBottom: 10,
+ marginTop: 10,
+ marginLeft: 6,
+ marginRight: 10
},
bigAvatar: {
- width: 80,
- height: 80,
+ width: 55,
+ height: 55,
},
brandBar: {
transition: theme.transitions.create(['width', 'margin', 'background'], {
@@ -168,16 +171,19 @@ const styles = theme => ({
fontSize: 14,
padding: 10,
alignItems: 'center',
+ justifyContent: 'flex-start',
'& h4': {
- fontSize: 18,
+ fontSize: 19,
marginBottom: 0,
textOverflow: 'ellipsis',
+ display: 'flex',
overflow: 'hidden',
whiteSpace: 'nowrap',
- width: 110
+ wordBreak:'break-all',
+ width: 180,
},
'& span': {
- fontSize: 12,
+ fontSize: 14,
textOverflow: 'ellipsis',
whiteSpace: 'nowrap',
width: 110,
diff --git a/front/odiparpack/app/components/Tables/CrudTableForm.js b/front/odiparpack/app/components/Tables/CrudTableForm.js
index d2d2ea8..017a3fc 100644
--- a/front/odiparpack/app/components/Tables/CrudTableForm.js
+++ b/front/odiparpack/app/components/Tables/CrudTableForm.js
@@ -5,14 +5,42 @@ import MainTableForm from './tableParts/MainTableForm';
import FloatingPanel from './../Panel/FloatingPanel';
class CrudTableForm extends React.Component {
- componentDidMount() {
+ /* 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)}
+ 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() {
@@ -27,11 +55,13 @@ class CrudTableForm extends React.Component {
anchor,
children,
branch,
- initValues
+ initValues,
+ removeRowAPI
} = this.props;
return (
<div>
- <FloatingPanel openForm={openForm} branch={branch} closeForm={closeForm}>
+
+ <FloatingPanel openForm={openForm} branch={branch} closeForm={closeForm} title = {this.getTitle()}>
<Form onSubmit={this.sendValues} initValues={initValues} branch={branch}>
{children}
</Form>
@@ -44,6 +74,7 @@ class CrudTableForm extends React.Component {
editRow={editRow}
anchor={anchor}
branch={branch}
+ removeRowAPI={removeRowAPI}
/>
</div>
);
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 {
</section>
<div className={css.buttonArea}>
<Button variant="contained" color="secondary" type="submit" disabled={submitting}>
- Submit
+ Guardar
</Button>
<Button
type="button"
disabled={pristine || submitting}
onClick={reset}
>
- Reset
+ Limpiar
</Button>
</div>
</form>
diff --git a/front/odiparpack/app/components/Tables/tableParts/MainTableForm.js b/front/odiparpack/app/components/Tables/tableParts/MainTableForm.js
index ccf0e4a..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 => (
<RowReadOnly
@@ -39,6 +40,7 @@ class MainTableForm extends React.Component {
editRow={() => editRow(item, branch)}
anchor={anchor}
branch={branch}
+ removeRowAPI = {removeRowAPI}
/>
));
@@ -61,7 +63,7 @@ class MainTableForm extends React.Component {
<Tooltip title="Add Item">
<Button variant="contained" onClick={() => addNew(anchor, branch)} color="secondary" className={classes.button}>
<AddIcon className={classNames(classes.leftIcon, classes.iconSmall)} />
- Add New
+ Añadir
</Button>
</Tooltip>
</div>
diff --git a/front/odiparpack/app/components/Tables/tableParts/RowReadOnly.js b/front/odiparpack/app/components/Tables/tableParts/RowReadOnly.js
index 7da655f..d060d02 100644
--- a/front/odiparpack/app/components/Tables/tableParts/RowReadOnly.js
+++ b/front/odiparpack/app/components/Tables/tableParts/RowReadOnly.js
@@ -5,8 +5,10 @@ import classNames from 'classnames';
import css from 'ba-styles/Table.scss';
import DeleteIcon from '@material-ui/icons/Delete';
import EditIcon from '@material-ui/icons/BorderColor';
+import { etiqueta } from 'ba-components/Odipar/common';
-import { TableCell, IconButton } from '@material-ui/core';
+import { TableCell, IconButton, LinearProgress } from '@material-ui/core';
+import { connect } from 'react-redux';
const styles = theme => ({
button: {
@@ -22,21 +24,40 @@ 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);
};
const renderCell = dataArray => dataArray.map((itemCell, index) => {
if (itemCell.name !== 'action' && !itemCell.hidden) {
- return (
- <TableCell padding="none" key={index.toString()}>
- {item.get(itemCell.name) !== undefined ? item.get(itemCell.name).toString() : ''}
- </TableCell>
- );
+ const inputType = anchor[index].type;
+ switch (inputType) {
+ case 'etiq_pedido':
+ case 'etiq_camion':
+ case 'etiq_bloqueo':
+ case 'etiq_alma':
+ return (
+ <TableCell padding="none" key={index.toString()}>
+ {etiqueta(inputType, item.get(itemCell.name))}
+ </TableCell>
+ );
+ case 'texto':
+ return (
+ <TableCell padding="none" key={index.toString()}>
+ {item.get(itemCell.name) !== undefined ? item.get(itemCell.name).toString() : ''}
+ </TableCell>
+ );
+ }
}
return false;
});
@@ -72,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/components/index.js b/front/odiparpack/app/components/index.js
index 9d7bdb3..123b48c 100644
--- a/front/odiparpack/app/components/index.js
+++ b/front/odiparpack/app/components/index.js
@@ -3,6 +3,8 @@ export Sidebar from './Sidebar/Sidebar';
export BreadCrumb from './BreadCrumb/BreadCrumb';
export SourceReader from './SourceReader/SourceReader';
export PapperBlock from './PapperBlock/PapperBlock';
+//Odipar
+
// Dashboard and Widget
export CounterWidget from './Counter/CounterWidget';
export SliderWidget from './Widget/SliderWidget';
diff --git a/front/odiparpack/app/containers/App/Application.js b/front/odiparpack/app/containers/App/Application.js
index 0a3ffc2..8a30720 100644
--- a/front/odiparpack/app/containers/App/Application.js
+++ b/front/odiparpack/app/containers/App/Application.js
@@ -25,7 +25,9 @@ import {
Profile, BlankPage,
Photos, Error, Settings,
HelpSupport, MapMarker, MapDirection, SearchMap,
- TrafficIndicator, StreetViewMap, NotFound
+ TrafficIndicator, StreetViewMap, NotFound,
+ Pedidos,
+ Almacenes
} from '../pageListAsync';
function Application(props) {
@@ -36,6 +38,9 @@ function Application(props) {
<Switch>
<Route exact path="/app" component={DashboardV1} />
<Route exact path="/app/dashboard-v2" component={DashboardV2} />
+ {/* Pedidos */}
+ <Route exact path="/app/pedidos" component={Pedidos}/>
+ <Route exact path="/app/almacenes" component={Almacenes}/>
{ /* Layout */ }
<Route exact path="/app/layouts" component={Parent} />
<Route path="/app/layouts/grid" component={Grid} />
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 (
<ThemeWrapper>
+ <Snackbar
+ anchorOrigin={{
+ vertical: 'top',
+ horizontal: 'right',
+ }}
+ open={openMessage}
+ autoHideDuration={6000}
+ onClose={handleMessageClose}
+ message={
+ <div className="center-aligned-child">
+ <Icon style={{
+ fontSize: 20,
+ marginRight: 15
+ }} >
+ {type === 'success' ? 'check_circle' : 'report_problem'}
+ </Icon>
+ {message}
+ </div>
+ }
+ action={[
+ <Button key="undo" color="secondary" size="small" onClick={handleMessageClose}>
+ <Icon>
+ {'close'}
+ </Icon>
+ </Button>
+ ]}
+ />
<Switch>
<Route path="/" exact component={LoginDedicated} />
<Route path="/app" component={Application} />
@@ -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/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 (
+ <div>
+ <Typography variant="h4">
+ {`Almacenes`}
+ </Typography>
+ <div>
+ <Paper className={classes.root}>
+ <CrudAlmacen title = "Lista de Almacenes" dataReal={dataRealF}/>
+ </Paper>
+ </div>
+ </div>
+ );
+ }
+}
+
+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 }) => (
+ <RadioGroup
+ {...input}
+ {...rest}
+ valueselected={input.value}
+ onChange={(event, value) => 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 (
+ <div>
+ <Notification close={() => closeNotif(branch)} variant = "success" message={messageNotif} />
+ <Paper className={classes.root}>
+ <CrudTableForm
+ dataTable={dataTable}
+ openForm={openForm}
+ dataInit={dataReal}
+ anchor={anchorTable}
+ title={title}
+ fetchData={fetchData}
+ addNew={addNew}
+ closeForm={closeForm}
+ submit={submit}
+ removeRow={removeRow}
+ editRow={editRow}
+ branch={branch}
+ initValues={initValues}
+ addNewAPI={getPedidos}
+ removeRowAPI={getPedidos}
+ editRowAPI={getPedidos}
+ dispatch = {dispatch}
+ editingId = {editingId}
+ >
+ {/* Create Your own form, then arrange or custom it as You like */}
+ <FormAlmacen/>
+ {/* No need create button or submit, because that already made in this component */}
+ </CrudTableForm>
+ </Paper>
+ </div>
+ );
+ }
+}
+
+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 (
+ <>
+ <div>
+ <FormControl className={classes.field}>
+ <InputLabel htmlFor="selection">Tipo de Almacen</InputLabel>
+ <Field
+ name="esPrincipal"
+ component={SelectRedux}
+ placeholder="Seleccionar"
+ autoWidth={trueBool}
+ >
+ <MenuItem value={true}>Principal</MenuItem>
+ <MenuItem value={false}>Pequeño</MenuItem>
+ </Field>
+ </FormControl>
+ </div>
+ <div>
+ <FormControl className={classes.field}>
+ <InputLabel htmlFor="selection">Region</InputLabel>
+ <Field
+ name="region"
+ component={SelectRedux}
+ placeholder="Seleccionar"
+ autoWidth={trueBool}
+ >
+ <MenuItem value="Costa">Costa</MenuItem>
+ <MenuItem value="Sierra">Sierra</MenuItem>
+ <MenuItem value="Selva">Selva</MenuItem>
+ </Field>
+ </FormControl>
+ </div>
+ <div>
+ <FormControl className={classes.field}>
+ <InputLabel htmlFor="selection">Provincia</InputLabel>
+ <Field
+ name="provincia"
+ component={SelectRedux}
+ placeholder="Seleccionar"
+ autoWidth={trueBool}
+ >
+ <MenuItem value="Lima">Lima</MenuItem>
+ <MenuItem value="Arequipa">Arequipa</MenuItem>
+ <MenuItem value="Cuzco">Cuzco</MenuItem>
+ </Field>
+ </FormControl>
+ </div>
+ <div>
+ <Field
+ name="latitud"
+ component={TextFieldRedux}
+ placeholder="Latitud"
+ label="Latitud de Provincia"
+ validate={required}
+ disabled
+ required
+ ref={this.saveRef}
+ className={classes.field}
+ />
+ <Field
+ name="longitud"
+ component={TextFieldRedux}
+ placeholder="Longitud"
+ label="Longitud de Provincia"
+ validate={required}
+ disabled
+ required
+ ref={this.saveRef}
+ className={classes.field}
+ />
+ </div>
+ </>
+ );
+ }
+}
+
+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: '[email protected]',
+ dni: '123456'
+ }, {
+ id: '2',
+ esPrincipal: true,
+ region: 'Costa',
+ provincia: 'Lima',
+ latitud: 24,
+ longitud: 50,
+ nombre: 'Juan',
+ estado: 1,
+ correo: '[email protected]',
+ 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
new file mode 100644
index 0000000..f617458
--- /dev/null
+++ b/front/odiparpack/app/containers/Odipar/Pedidos/Pedidos.js
@@ -0,0 +1,73 @@
+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 { connect } from 'react-redux';
+
+//actions
+import { getPedidos } from 'ba-actions/pedido';
+
+const styles = ({
+ root: {
+ flexGrow: 1,
+ marginTop: 30,
+ }
+ });
+
+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 (
+ <div>
+ <Typography variant="h4">
+ {`Pedidos`}
+ </Typography>
+ <div>
+ <Paper className={classes.root}>
+ <CrudPedido title = "Historial de Pedidos" dataReal={dataRealF}/>
+ </Paper>
+ </div>
+ </div>
+ );
+ }
+}
+
+Pedidos.propTypes = {
+ classes: PropTypes.object.isRequired,
+};
+
+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
new file mode 100644
index 0000000..c7a7a58
--- /dev/null
+++ b/front/odiparpack/app/containers/Odipar/Pedidos/table/CrudPedido.js
@@ -0,0 +1,149 @@
+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';
+//actions
+import { getPedidos } from '../../../../actions/pedido';
+const branch = 'crudPedido';
+
+const renderRadioGroup = ({ input, ...rest }) => (
+ <RadioGroup
+ {...input}
+ {...rest}
+ valueselected={input.value}
+ onChange={(event, value) => input.onChange(value)}
+ />
+);
+
+
+const styles = ({
+ root: {
+ flexGrow: 1,
+ }
+});
+
+class CrudPedido 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)
+
+ return (
+ <div>
+ <Notification close={() => closeNotif(branch)} variant = "success" message={messageNotif} />
+ <Paper className={classes.root}>
+ <CrudTableForm
+ dataTable={dataTable}
+ openForm={openForm}
+ dataInit={dataReal}
+ anchor={anchorTable}
+ title={title}
+ fetchData={fetchData}
+ addNew={addNew}
+ closeForm={closeForm}
+ submit={submit}
+ removeRow={removeRow}
+ editRow={editRow}
+ branch={branch}
+ initValues={initValues}
+ addNewAPI={getPedidos}
+ removeRowAPI={getPedidos}
+ editRowAPI={getPedidos}
+ dispatch = {dispatch}
+ editingId = {editingId}
+ >
+ {/* Create Your own form, then arrange or custom it as You like */}
+ <FormPedido/>
+ {/* No need create button or submit, because that already made in this component */}
+ </CrudTableForm>
+ </Paper>
+ </div>
+ );
+ }
+}
+
+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']),
+ editingId: state.getIn([branch, 'editingId']),
+ pedidosLista : state.getIn(['pedido','pedidos']),
+});
+
+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 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..548f47b
--- /dev/null
+++ b/front/odiparpack/app/containers/Odipar/Pedidos/table/FormPedido.js
@@ -0,0 +1,186 @@
+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,
+ EstadoRedux
+} from 'ba-components/Forms/ReduxFormMUI';
+import {
+ MenuItem,
+ InputLabel,
+ FormControl,
+ Typography,
+ } 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 (
+ <>
+ <Typography variant="h5">
+ {`Datos de Pedido`}
+ </Typography>
+ <div>
+ <Field
+ name="cantidad"
+ component={TextFieldRedux}
+ placeholder="Cantidad paquetes A"
+ label="Cantidad de Paquetes A"
+ type = {'number'}
+ validate={[required, integer]}
+ required
+ ref={this.saveRef}
+ className={classes.field}
+ />
+ </div>
+ <div>
+ <FormControl className={classes.field}>
+ <Field
+ name = "fecha"
+ component={DatePickerRedux}
+ label="Fecha de Registro"
+ readonly= {true}
+ />
+ </FormControl>
+ </div>
+ <div>
+ <InputLabel htmlFor="selection" style={{fontSize:12.5, marginBottom: 5}}>Estado</InputLabel>
+ <Field
+ name = "estado"
+ component={EstadoRedux}
+ />
+
+ </div>
+ <Typography variant="h5" style={{marginTop: 5}}>
+ {`Datos de Entrega`}
+ </Typography>
+ <div>
+ <FormControl className={classes.field}>
+ <InputLabel htmlFor="selection">Origen</InputLabel>
+ <Field
+ name="origen"
+ component={SelectRedux}
+ placeholder="Seleccionar"
+ autoWidth={trueBool}
+ >
+ <MenuItem value="Lima">Lima</MenuItem>
+ <MenuItem value="Arequipa">Arequipa</MenuItem>
+ <MenuItem value="Cuzco">Cuzco</MenuItem>
+ </Field>
+ </FormControl>
+ </div>
+ <div>
+ <FormControl className={classes.field}>
+ <InputLabel htmlFor="selection">Destino</InputLabel>
+ <Field
+ name="destino"
+ component={SelectRedux}
+ placeholder="Seleccionar"
+ autoWidth={trueBool}
+ >
+ <MenuItem value="Lima">Lima</MenuItem>
+ <MenuItem value="Arequipa">Arequipa</MenuItem>
+ <MenuItem value="Cuzco">Cuzco</MenuItem>
+ </Field>
+ </FormControl>
+ </div>
+ <div>
+ <Field
+ name="plazo_entrega"
+ component={TextFieldRedux}
+ placeholder="Plazo entrega"
+ label="Plazo de Entrega"
+ ref={this.saveRef}
+ disabled
+ className={classes.field}
+ />
+ </div>
+
+ <Typography variant="h5">
+ {`Datos de Cliente`}
+ </Typography>
+
+ <div>
+ <Field
+ name="nombre"
+ component={TextFieldRedux}
+ placeholder="Ingrese el nombre"
+ label="Nombre del Cliente"
+ validate={required}
+ required
+ ref={this.saveRef}
+ className={classes.field}
+ />
+ </div>
+ <div>
+ <Field
+ name="dni"
+ component={TextFieldRedux}
+ placeholder="Ingrese el RUC"
+ label="RUC del Cliente"
+ validate={required}
+ required
+ ref={this.saveRef}
+ className={classes.field}
+ />
+ </div>
+ <div>
+ <Field
+ name="correo"
+ component={TextFieldRedux}
+ placeholder="Ingrese el correo"
+ label="Correo del Cliente"
+ validate={required}
+ required
+ ref={this.saveRef}
+ className={classes.field}
+ />
+ </div>
+ </>
+ );
+ }
+}
+
+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..4972669
--- /dev/null
+++ b/front/odiparpack/app/containers/Odipar/Pedidos/table/sampleData.js
@@ -0,0 +1,90 @@
+export const anchorTable = [
+ {
+ name: 'id',
+ label: 'Identificador',
+ initialValue: '',
+ hidden: false,
+ type: 'texto'
+ }, {
+ name: 'cantidad',
+ label: 'Cantidad',
+ initialValue: 0,
+ 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: 'Lima',
+ width: 'auto',
+ hidden: false,
+ type: 'texto'
+ }, {
+ name: 'destino',
+ label: 'Destino',
+ initialValue: 'Lima',
+ width: 'auto',
+ hidden: false,
+ type: 'texto'
+ }, {
+ name: 'plazo_entrega',
+ label: 'Plazo de entrega',
+ initialValue: 'aja',
+ width: 'auto',
+ hidden: false,
+ type: 'texto'
+ }, {
+ name: 'nombre',
+ label: 'Cliente',
+ initialValue: null,
+ 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,
+ origen: 'Arequipa',
+ fecha: '24/05/2022 11:28 AM',
+ destino: 'Cuzco',
+ plazo_entrega: '24 horas',
+ nombre: 'Juan',
+ estado: 0,
+ correo: '[email protected]',
+ 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: '[email protected]',
+ dni: '123456'
+ }
+];
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/containers/Templates/Dashboard.js b/front/odiparpack/app/containers/Templates/Dashboard.js
index 5f24777..f82d16d 100644
--- a/front/odiparpack/app/containers/Templates/Dashboard.js
+++ b/front/odiparpack/app/containers/Templates/Dashboard.js
@@ -66,7 +66,7 @@ function Dashboard(props) {
<main className={classNames(classes.content, !sidebarOpen && classes.contentPadding)} id="mainContent">
<div className={classes.bgbar} />
<section className={classes.mainWrap}>
- <BreadCrumb separator=" › " theme="light" location={history.location} />
+ <BreadCrumb separator=" › " theme="dark" location={history.location} />
<Fade
in={pageLoaded}
mountOnEnter
diff --git a/front/odiparpack/app/containers/Templates/appStyles-jss.js b/front/odiparpack/app/containers/Templates/appStyles-jss.js
index f9175eb..741bccf 100644
--- a/front/odiparpack/app/containers/Templates/appStyles-jss.js
+++ b/front/odiparpack/app/containers/Templates/appStyles-jss.js
@@ -52,6 +52,8 @@ const styles = theme => ({
},
mainWrap: {
position: 'relative',
+ backgroundColor: '#F1EEEE',
+ padding: 20,
marginTop: theme.spacing(6),
marginLeft: theme.spacing(1.5),
height: '100%',
diff --git a/front/odiparpack/app/containers/pageListAsync.js b/front/odiparpack/app/containers/pageListAsync.js
index feff750..14381b1 100644
--- a/front/odiparpack/app/containers/pageListAsync.js
+++ b/front/odiparpack/app/containers/pageListAsync.js
@@ -1,6 +1,20 @@
import Loadable from 'react-loadable';
import Loading from 'ba-components/Loading';
+// 2.Pedidos
+export const Pedidos = Loadable({
+ loader: () => import('./Odipar/Pedidos/Pedidos'),
+ loading: Loading,
+});
+
+// 4. Almacenes
+export const Almacenes = Loadable({
+ loader: () => import('./Odipar/Almacen/Almacenes'),
+ loading: Loading,
+});
+
+
+
// Dashboard
export const DashboardV1 = Loadable({
loader: () => import('./Dashboard/Dashboard'),
diff --git a/front/odiparpack/app/redux/configureStore.js b/front/odiparpack/app/redux/configureStore.js
index 49a6b7b..767af03 100644
--- a/front/odiparpack/app/redux/configureStore.js
+++ b/front/odiparpack/app/redux/configureStore.js
@@ -7,14 +7,16 @@ 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';
+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 = [sagaMiddleware, routerMiddleware(history)];
+ const middlewares = [thunk, routerMiddleware(history)];
const enhancers = [applyMiddleware(...middlewares)];
@@ -29,17 +31,18 @@ export default function configureStore(initialState = {}, history) {
shouldHotReload: false,
})
: compose;
+
/* eslint-enable */
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 */
@@ -51,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/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/modules/crudTableForm.js b/front/odiparpack/app/redux/modules/crudTableForm.js
index d5194c1..acf9abd 100644
--- a/front/odiparpack/app/redux/modules/crudTableForm.js
+++ b/front/odiparpack/app/redux/modules/crudTableForm.js
@@ -24,12 +24,26 @@ 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;
}
}
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);
@@ -45,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/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 902ab2b..0c2e9b8 100644
--- a/front/odiparpack/app/redux/reducers.js
+++ b/front/odiparpack/app/redux/reducers.js
@@ -20,6 +20,11 @@ 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'
+import almacen from './modules/almacen';
+
/**
* Branching reducers to use one reducer for many components
*/
@@ -55,6 +60,11 @@ export default function createReducer(injectedReducers) {
crudTableDemo: branchReducer(crudTable, 'crudTableDemo'),
crudTableForm,
crudTbFrmDemo: branchReducer(crudTableForm, 'crudTbFrmDemo'),
+ crudPedido: branchReducer(crudTableForm, 'crudPedido'),
+ crudAlmacen: branchReducer(crudTableForm, 'crudAlmacen'),
+ pedido,
+ almacen,
+ message,
language: languageProviderReducer,
router: connectRouter(history),
...injectedReducers,
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/api.js b/front/odiparpack/app/utils/odipar/api.js
new file mode 100644
index 0000000..50c2beb
--- /dev/null
+++ b/front/odiparpack/app/utils/odipar/api.js
@@ -0,0 +1,101 @@
+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 = {}) {
+ //console.log("apiReq - ANTES DE PROMESA")
+ headers = {
+ ...headers
+ }
+ if (method === 'get' || method === 'delete') {
+ data = {
+ ...requestOptions,
+ params: data,
+ paramsSerializer: function (params) {
+ return qs.stringify(params, { arrayFormat: 'repeat' })
+ },
+ headers
+ }
+ }
+
+ return axios[method](endPoint, data, { headers })
+}
+
+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("addMessageCurry -SUCCESS MSG")
+ 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..1b280b8
--- /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/almacenes',
+ 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.json b/front/odiparpack/package.json
index efd37f0..d2cde1e 100644
--- a/front/odiparpack/package.json
+++ b/front/odiparpack/package.json
@@ -94,6 +94,7 @@
"@date-io/moment": "1.3.8",
"@material-ui/core": "^4.7.0",
"@material-ui/icons": "^4.5.1",
+ "@material-ui/lab": "^4.0.0-alpha.61",
"@material-ui/pickers": "^3.2.8",
"@types/googlemaps": "^3.38.1",
"@types/markerclustererplus": "^2.1.33",
@@ -135,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",
@@ -170,15 +172,18 @@
"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",
"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",
diff --git a/front/odiparpack/public/images/logo.png b/front/odiparpack/public/images/logo.png
index 386670b..05f0da2 100644
--- a/front/odiparpack/public/images/logo.png
+++ b/front/odiparpack/public/images/logo.png
Binary files differ
diff --git a/front/odiparpack/target/npmlist.json b/front/odiparpack/target/npmlist.json
new file mode 100644
index 0000000..2819b6d
--- /dev/null
+++ b/front/odiparpack/target/npmlist.json
@@ -0,0 +1 @@
+{"name":"Boss-Ultimate","version":"1.7.0","dependencies":{"@babel/plugin-proposal-export-default-from":{"version":"7.7.4","dependencies":{"@babel/helper-plugin-utils":{"version":"7.0.0"},"@babel/plugin-syntax-export-default-from":{"version":"7.7.4","dependencies":{"@babel/helper-plugin-utils":{"version":"7.0.0"}}}}},"@babel/plugin-proposal-object-rest-spread":{"version":"7.7.7","dependencies":{"@babel/helper-plugin-utils":{"version":"7.0.0"},"@babel/plugin-syntax-object-rest-spread":{"version":"7.7.4","dependencies":{"@babel/helper-plugin-utils":{"version":"7.0.0"}}}}},"@babel/polyfill":{"version":"7.4.3","dependencies":{"core-js":{"version":"2.6.10"},"regenerator-runtime":{"version":"0.13.3"}}},"@date-io/date-fns":{"version":"1.3.13","dependencies":{"@date-io/core":{"version":"1.3.13"}}},"@date-io/moment":{"version":"1.3.8","dependencies":{"@date-io/core":{"version":"1.3.13"}}},"@material-ui/core":{"required":{"_requested":{"name":"@material-ui/core"},"author":{"name":"Material-UI Team"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"author":{"name":"Sebastian McKenzie"},"dependencies":{"regenerator-runtime":{"_requested":{"name":"regenerator-runtime"},"author":{"name":"Ben Newman"},"name":"regenerator-runtime","version":"0.13.3"}},"name":"@babel/runtime","version":"7.7.4"},"hoist-non-react-statics":{"_requested":{"name":"hoist-non-react-statics"},"author":{"name":"Michael Ridgway"},"dependencies":{"react-is":{"_requested":{"name":"react-is"},"name":"react-is","version":"16.12.0"}},"name":"hoist-non-react-statics","version":"3.3.2"},"@material-ui/styles":{"_requested":{"name":"@material-ui/styles"},"author":{"name":"Material-UI Team"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"@emotion/hash":{"_requested":{"name":"@emotion/hash"},"name":"@emotion/hash","version":"0.7.3"},"hoist-non-react-statics":{"_requested":{"name":"hoist-non-react-statics"},"author":{"name":"Michael Ridgway"},"dependencies":{"react-is":{"_requested":{"name":"react-is"},"name":"react-is","version":"16.12.0"}},"name":"hoist-non-react-statics","version":"3.3.2"},"@material-ui/types":{"_requested":{"name":"@material-ui/types"},"author":{"name":"Material-UI Team"},"name":"@material-ui/types","version":"4.1.1"},"@material-ui/utils":{"_requested":{"name":"@material-ui/utils"},"author":{"name":"Material-UI Team"},"name":"@material-ui/utils","version":"4.7.1"},"clsx":{"_requested":{"name":"clsx"},"author":{"name":"Luke Edwards"},"name":"clsx","version":"1.0.4"},"csstype":{"_requested":{"name":"csstype"},"author":{"name":"Fredrik Nicol"},"name":"csstype","version":"2.6.7"},"jss":{"_requested":{"name":"jss"},"author":{"name":"JSS Team"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"csstype":{"_requested":{"name":"csstype"},"name":"csstype","version":"2.6.7"},"is-in-browser":{"_requested":{"name":"is-in-browser"},"author":{"name":"Jared Anderson"},"name":"is-in-browser","version":"1.1.3"},"tiny-warning":{"_requested":{"name":"tiny-warning"},"author":{"name":"Alex Reardon"},"name":"tiny-warning","version":"1.0.3"}},"name":"jss","version":"10.0.0"},"jss-plugin-camel-case":{"_requested":{"name":"jss-plugin-camel-case"},"author":{"name":"JSS Team"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"hyphenate-style-name":{"_requested":{"name":"hyphenate-style-name"},"author":{"name":"Espen Hovlandsdal"},"name":"hyphenate-style-name","version":"1.0.3"},"jss":{"_requested":{"name":"jss"},"name":"jss","version":"10.0.0"}},"name":"jss-plugin-camel-case","version":"10.0.0"},"jss-plugin-default-unit":{"_requested":{"name":"jss-plugin-default-unit"},"author":{"name":"JSS Team"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"jss":{"_requested":{"name":"jss"},"name":"jss","version":"10.0.0"}},"name":"jss-plugin-default-unit","version":"10.0.0"},"jss-plugin-global":{"_requested":{"name":"jss-plugin-global"},"author":{"name":"JSS Team"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"jss":{"_requested":{"name":"jss"},"name":"jss","version":"10.0.0"}},"name":"jss-plugin-global","version":"10.0.0"},"jss-plugin-nested":{"_requested":{"name":"jss-plugin-nested"},"author":{"name":"JSS Team"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"jss":{"_requested":{"name":"jss"},"name":"jss","version":"10.0.0"},"tiny-warning":{"_requested":{"name":"tiny-warning"},"name":"tiny-warning","version":"1.0.3"}},"name":"jss-plugin-nested","version":"10.0.0"},"jss-plugin-props-sort":{"_requested":{"name":"jss-plugin-props-sort"},"author":{"name":"JSS Team"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"jss":{"_requested":{"name":"jss"},"name":"jss","version":"10.0.0"}},"name":"jss-plugin-props-sort","version":"10.0.0"},"jss-plugin-rule-value-function":{"_requested":{"name":"jss-plugin-rule-value-function"},"author":{"name":"JSS Team"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"jss":{"_requested":{"name":"jss"},"name":"jss","version":"10.0.0"}},"name":"jss-plugin-rule-value-function","version":"10.0.0"},"jss-plugin-vendor-prefixer":{"_requested":{"name":"jss-plugin-vendor-prefixer"},"author":{"name":"JSS Team"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"css-vendor":{"_requested":{"name":"css-vendor"},"author":{"name":"Oleg Slobodskoi"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"is-in-browser":{"_requested":{"name":"is-in-browser"},"name":"is-in-browser","version":"1.1.3"}},"name":"css-vendor","version":"2.0.7"},"jss":{"_requested":{"name":"jss"},"name":"jss","version":"10.0.0"}},"name":"jss-plugin-vendor-prefixer","version":"10.0.0"},"prop-types":{"_requested":{"name":"prop-types"},"name":"prop-types","version":"15.7.2"}},"name":"@material-ui/styles","version":"4.7.1"},"@material-ui/system":{"_requested":{"name":"@material-ui/system"},"author":{"name":"Material-UI Team"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"@material-ui/utils":{"_requested":{"name":"@material-ui/utils"},"name":"@material-ui/utils","version":"4.7.1"},"prop-types":{"_requested":{"name":"prop-types"},"name":"prop-types","version":"15.7.2"}},"name":"@material-ui/system","version":"4.7.1"},"@material-ui/types":{"_requested":{"name":"@material-ui/types"},"dependencies":{"@types/react":{"_requested":{"name":"@types/react"},"dependencies":{"@types/prop-types":{"_requested":{"name":"@types/prop-types"},"name":"@types/prop-types","version":"15.7.3"},"csstype":{"_requested":{"name":"csstype"},"name":"csstype","version":"2.6.7"}},"name":"@types/react","version":"16.9.15"}},"name":"@material-ui/types","version":"4.1.1"},"@material-ui/utils":{"_requested":{"name":"@material-ui/utils"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"prop-types":{"_requested":{"name":"prop-types"},"name":"prop-types","version":"15.7.2"},"react-is":{"_requested":{"name":"react-is"},"name":"react-is","version":"16.12.0"}},"name":"@material-ui/utils","version":"4.7.1"},"@types/react-transition-group":{"_requested":{"name":"@types/react-transition-group"},"dependencies":{"@types/react":{"_requested":{"name":"@types/react"},"name":"@types/react","version":"16.9.15"}},"name":"@types/react-transition-group","version":"4.2.3"},"clsx":{"_requested":{"name":"clsx"},"name":"clsx","version":"1.0.4"},"convert-css-length":{"_requested":{"name":"convert-css-length"},"author":{"name":"Kyle Mathews"},"name":"convert-css-length","version":"2.0.1"},"normalize-scroll-left":{"_requested":{"name":"normalize-scroll-left"},"author":{"name":"Ali Taheri Moghaddar"},"name":"normalize-scroll-left","version":"0.2.0"},"popper.js":{"_requested":{"name":"popper.js"},"author":{"name":"Federico Zivolo"},"name":"popper.js","version":"1.16.0"},"prop-types":{"_requested":{"name":"prop-types"},"name":"prop-types","version":"15.7.2"},"react-is":{"_requested":{"name":"react-is"},"name":"react-is","version":"16.12.0"},"react-transition-group":{"_requested":{"name":"react-transition-group"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"dom-helpers":{"_requested":{"name":"dom-helpers"},"author":{"name":"Jason Quense"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"csstype":{"_requested":{"name":"csstype"},"name":"csstype","version":"2.6.7"}},"name":"dom-helpers","version":"5.1.3"},"loose-envify":{"_requested":{"name":"loose-envify"},"author":{"name":"Andres Suarez"},"name":"loose-envify","version":"1.4.0"},"prop-types":{"_requested":{"name":"prop-types"},"name":"prop-types","version":"15.7.2"}},"name":"react-transition-group","version":"4.3.0"}},"name":"@material-ui/core","version":"4.7.1"}},"@material-ui/icons":{"required":{"_requested":{"name":"@material-ui/icons"},"author":{"name":"Material-UI Team"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"}},"name":"@material-ui/icons","version":"4.5.1"}},"@material-ui/pickers":{"version":"3.2.8","dependencies":{"@babel/runtime":{"version":"7.7.4"},"@types/styled-jsx":{"version":"2.2.8","dependencies":{"@types/react":{"version":"16.9.15"}}},"clsx":{"version":"1.0.4"},"react-transition-group":{"version":"4.3.0"},"rifm":{"version":"0.7.0","dependencies":{"@babel/runtime":{"version":"7.7.4"}}}}},"@types/googlemaps":{"version":"3.38.1"},"@types/markerclustererplus":{"version":"2.1.33","dependencies":{"@types/google-maps":{"version":"3.2.1","dependencies":{"@types/googlemaps":{"version":"3.38.1"}}}}},"acorn":{"version":"6.4.0"},"autoprefixer":{"version":"9.7.4","dependencies":{"caniuse-lite":{"version":"1.0.30001025"},"postcss":{"version":"7.0.26","dependencies":{"source-map":{"version":"0.6.1"},"supports-color":{"version":"6.1.0","dependencies":{"has-flag":{"version":"3.0.0"}}},"chalk":{"version":"2.4.2"}}},"postcss-value-parser":{"version":"4.0.2"},"browserslist":{"version":"4.8.6","dependencies":{"caniuse-lite":{"version":"1.0.30001025"},"electron-to-chromium":{"version":"1.3.345"},"node-releases":{"version":"1.1.48","dependencies":{"semver":{"version":"6.3.0"}}}}},"chalk":{"version":"2.4.2"},"normalize-range":{"version":"0.1.2"},"num2fraction":{"version":"1.2.2"}}},"autosuggest-highlight":{"version":"3.1.1","dependencies":{"diacritic":{"version":"0.0.2"}}},"axios":{"version":"0.19.0","dependencies":{"follow-redirects":{"version":"1.5.10","dependencies":{"debug":{"version":"3.1.0","dependencies":{"ms":{"version":"2.0.0"}}}}},"is-buffer":{"version":"2.0.4"}}},"bourbon":{"version":"5.1.0"},"bourbon-neat":{"version":"3.0.1"},"chalk":{"version":"2.4.2","dependencies":{"ansi-styles":{"version":"3.2.1","dependencies":{"color-convert":{"version":"1.9.3","dependencies":{"color-name":{"version":"1.1.3"}}}}},"escape-string-regexp":{"version":"1.0.5"},"supports-color":{"version":"5.5.0","dependencies":{"has-flag":{"version":"3.0.0"}}}}},"chart.js":{"version":"2.9.3","dependencies":{"chartjs-color":{"version":"2.4.1","dependencies":{"chartjs-color-string":{"version":"0.6.0","dependencies":{"color-name":{"version":"1.1.3"}}},"color-convert":{"version":"1.9.3"}}},"moment":{"version":"2.24.0"}}},"classnames":{"version":"2.2.6"},"compression":{"version":"1.7.4","dependencies":{"accepts":{"version":"1.3.7","dependencies":{"mime-types":{"version":"2.1.25","dependencies":{"mime-db":{"version":"1.42.0"}}},"negotiator":{"version":"0.6.2"}}},"bytes":{"version":"3.0.0"},"compressible":{"version":"2.0.17","dependencies":{"mime-db":{"version":"1.42.0"}}},"debug":{"version":"2.6.9","dependencies":{"ms":{"version":"2.0.0"}}},"safe-buffer":{"version":"5.1.2"},"on-headers":{"version":"1.0.2"},"vary":{"version":"1.1.2"}}},"connected-react-router":{"version":"6.6.1","dependencies":{"immutable":{"version":"3.8.2"},"prop-types":{"version":"15.7.2"},"seamless-immutable":{"version":"7.1.4"}}},"cross-env":{"version":"5.2.0","dependencies":{"cross-spawn":{"version":"6.0.5","dependencies":{"nice-try":{"version":"1.0.5"},"path-key":{"version":"2.0.1"},"semver":{"version":"5.7.1"},"shebang-command":{"version":"1.2.0","dependencies":{"shebang-regex":{"version":"1.0.0"}}},"which":{"version":"1.3.1","dependencies":{"isexe":{"version":"2.0.0"}}}}},"is-windows":{"version":"1.0.2"}}},"date-fns":{"version":"2.1.0"},"detect-browser":{"version":"4.8.0"},"dotenv":{"version":"6.2.0"},"downshift":{"version":"1.31.16"},"draft-js":{"version":"0.10.5","dependencies":{"immutable":{"version":"3.7.6"},"fbjs":{"version":"0.8.17","dependencies":{"core-js":{"version":"1.2.7"},"isomorphic-fetch":{"version":"2.2.1","dependencies":{"node-fetch":{"version":"1.7.3","dependencies":{"encoding":{"version":"0.1.12","dependencies":{"iconv-lite":{"version":"0.4.24","dependencies":{"safer-buffer":{"version":"2.1.2"}}}}},"is-stream":{"version":"1.1.0"}}},"whatwg-fetch":{"version":"2.0.4"}}},"loose-envify":{"version":"1.4.0"},"object-assign":{"version":"4.1.1"},"promise":{"version":"7.3.1","dependencies":{"asap":{"version":"2.0.6"}}},"setimmediate":{"version":"1.0.5"},"ua-parser-js":{"version":"0.7.20"}}},"object-assign":{"version":"4.1.1"}}},"draft-js-inline-toolbar-plugin":{"version":"3.0.1","dependencies":{"draft-js-buttons":{"version":"2.0.2","dependencies":{"clsx":{"version":"1.0.4"}}}}},"draft-js-plugins-editor":{"version":"2.1.1","dependencies":{"decorate-component-with-props":{"version":"1.1.0"},"immutable":{"version":"3.7.6"},"find-with-regex":{"version":"1.1.3"},"prop-types":{"version":"15.7.2"},"union-class-names":{"version":"1.0.0"}}},"draftjs-to-html":{"version":"0.8.4"},"draftjs-to-markdown":{"version":"0.5.1"},"emoji-js":{"version":"3.5.0","dependencies":{"emoji-datasource":{"version":"4.1.0"}}},"emoji-picker-react":{"version":"3.1.3"},"express":{"version":"4.16.4","dependencies":{"accepts":{"version":"1.3.7"},"array-flatten":{"version":"1.1.1"},"body-parser":{"version":"1.18.3","dependencies":{"debug":{"version":"2.6.9","dependencies":{"ms":{"version":"2.0.0"}}},"iconv-lite":{"version":"0.4.23","dependencies":{"safer-buffer":{"version":"2.1.2"}}},"bytes":{"version":"3.0.0"},"content-type":{"version":"1.0.4"},"depd":{"version":"1.1.2"},"http-errors":{"version":"1.6.3","dependencies":{"depd":{"version":"1.1.2"},"inherits":{"version":"2.0.3"},"setprototypeof":{"version":"1.1.0"},"statuses":{"version":"1.4.0"}}},"on-finished":{"version":"2.3.0"},"qs":{"version":"6.5.2"},"raw-body":{"version":"2.3.3","dependencies":{"bytes":{"version":"3.0.0"},"http-errors":{"version":"1.6.3"},"iconv-lite":{"version":"0.4.23","dependencies":{"safer-buffer":{"version":"2.1.2"}}},"unpipe":{"version":"1.0.0"}}},"type-is":{"version":"1.6.18"}}},"content-disposition":{"version":"0.5.2"},"content-type":{"version":"1.0.4"},"cookie":{"version":"0.3.1"},"cookie-signature":{"version":"1.0.6"},"depd":{"version":"1.1.2"},"encodeurl":{"version":"1.0.2"},"escape-html":{"version":"1.0.3"},"etag":{"version":"1.8.1"},"debug":{"version":"2.6.9","dependencies":{"ms":{"version":"2.0.0"}}},"safe-buffer":{"version":"5.1.2"},"finalhandler":{"version":"1.1.1","dependencies":{"encodeurl":{"version":"1.0.2"},"escape-html":{"version":"1.0.3"},"debug":{"version":"2.6.9","dependencies":{"ms":{"version":"2.0.0"}}},"on-finished":{"version":"2.3.0"},"parseurl":{"version":"1.3.3"},"statuses":{"version":"1.4.0"},"unpipe":{"version":"1.0.0"}}},"fresh":{"version":"0.5.2"},"merge-descriptors":{"version":"1.0.1"},"methods":{"version":"1.1.2"},"on-finished":{"version":"2.3.0","dependencies":{"ee-first":{"version":"1.1.1"}}},"parseurl":{"version":"1.3.3"},"path-to-regexp":{"version":"0.1.7"},"proxy-addr":{"version":"2.0.5","dependencies":{"forwarded":{"version":"0.1.2"},"ipaddr.js":{"version":"1.9.0"}}},"qs":{"version":"6.5.2"},"range-parser":{"version":"1.2.1"},"send":{"version":"0.16.2","dependencies":{"depd":{"version":"1.1.2"},"destroy":{"version":"1.0.4"},"encodeurl":{"version":"1.0.2"},"escape-html":{"version":"1.0.3"},"etag":{"version":"1.8.1"},"fresh":{"version":"0.5.2"},"http-errors":{"version":"1.6.3"},"mime":{"version":"1.4.1"},"ms":{"version":"2.0.0"},"on-finished":{"version":"2.3.0"},"range-parser":{"version":"1.2.1"},"debug":{"version":"2.6.9","dependencies":{"ms":{"version":"2.0.0"}}},"statuses":{"version":"1.4.0"}}},"serve-static":{"version":"1.13.2","dependencies":{"encodeurl":{"version":"1.0.2"},"escape-html":{"version":"1.0.3"},"parseurl":{"version":"1.3.3"},"send":{"version":"0.16.2"}}},"setprototypeof":{"version":"1.1.0"},"statuses":{"version":"1.4.0"},"type-is":{"version":"1.6.18","dependencies":{"media-typer":{"version":"0.3.0"},"mime-types":{"version":"2.1.25"}}},"utils-merge":{"version":"1.0.1"},"vary":{"version":"1.1.2"}}},"fontfaceobserver":{"version":"2.1.0"},"fs":{"version":"0.0.1-security"},"history":{"version":"4.9.0","dependencies":{"@babel/runtime":{"version":"7.7.4"},"loose-envify":{"version":"1.4.0","dependencies":{"js-tokens":{"version":"4.0.0"}}},"resolve-pathname":{"version":"2.2.0"},"tiny-invariant":{"version":"1.0.6"},"tiny-warning":{"version":"1.0.3"},"value-equal":{"version":"0.4.0"}}},"hoist-non-react-statics":{"version":"3.3.0","dependencies":{"react-is":{"version":"16.12.0"}}},"immutable":{"version":"3.8.2"},"intl":{"version":"1.2.5"},"invariant":{"version":"2.2.4","dependencies":{"loose-envify":{"version":"1.4.0"}}},"ip":{"version":"1.1.5"},"keycode":{"version":"2.2.0"},"lodash":{"version":"4.17.15"},"lru-memoize":{"version":"1.1.0"},"minimist":{"version":"1.2.0"},"mui-datatables":{"version":"2.13.2","dependencies":{"classnames":{"version":"2.2.6"},"lodash.assignwith":{"version":"4.2.0"},"lodash.clonedeep":{"version":"4.5.0"},"lodash.find":{"version":"4.6.0"},"lodash.get":{"version":"4.4.2"},"lodash.isequal":{"version":"4.5.0"},"lodash.isundefined":{"version":"3.0.1"},"lodash.memoize":{"version":"4.1.2"},"lodash.merge":{"version":"4.6.2"},"prop-types":{"version":"15.7.2"},"react-to-print":{"version":"2.5.0","dependencies":{"prop-types":{"version":"15.7.2"}}}}},"prop-types":{"version":"15.7.2","dependencies":{"loose-envify":{"version":"1.4.0"},"object-assign":{"version":"4.1.1"},"react-is":{"version":"16.12.0"}}},"rcolor":{"version":"1.0.1"},"react":{"version":"16.8.6","dependencies":{"loose-envify":{"version":"1.4.0"},"object-assign":{"version":"4.1.1"},"prop-types":{"version":"15.7.2"},"scheduler":{"version":"0.13.6","dependencies":{"loose-envify":{"version":"1.4.0"},"object-assign":{"version":"4.1.1"}}}}},"react-anchor-link-smooth-scroll":{"version":"1.0.12"},"react-animated-slider":{"version":"1.1.4","dependencies":{"react":{"version":"16.8.6"}}},"react-autosuggest":{"version":"9.4.3","dependencies":{"prop-types":{"version":"15.7.2"},"react-autowhatever":{"version":"10.2.0","dependencies":{"prop-types":{"version":"15.7.2"},"react-themeable":{"version":"1.1.0","dependencies":{"object-assign":{"version":"3.0.0"}}},"section-iterator":{"version":"2.0.0"}}},"shallow-equal":{"version":"1.2.0"}}},"react-big-calendar":{"version":"0.19.2","dependencies":{"classnames":{"version":"2.2.6"},"date-arithmetic":{"version":"3.1.0"},"invariant":{"version":"2.2.4"},"lodash":{"version":"4.17.15"},"prop-types":{"version":"15.7.2"},"dom-helpers":{"version":"3.4.0","dependencies":{"@babel/runtime":{"version":"7.7.4"}}},"warning":{"version":"2.1.0","dependencies":{"loose-envify":{"version":"1.4.0"}}},"react-overlays":{"version":"0.7.4","dependencies":{"classnames":{"version":"2.2.6"},"prop-types":{"version":"15.7.2"},"prop-types-extra":{"version":"1.1.1","dependencies":{"react-is":{"version":"16.12.0"},"warning":{"version":"4.0.2"}}},"dom-helpers":{"version":"3.4.0","dependencies":{"@babel/runtime":{"version":"7.7.4"}}},"warning":{"version":"3.0.0","dependencies":{"loose-envify":{"version":"1.4.0"}}}}},"react-prop-types":{"version":"0.4.0","dependencies":{"warning":{"version":"3.0.0","dependencies":{"loose-envify":{"version":"1.4.0"}}}}},"uncontrollable":{"version":"4.1.0","dependencies":{"invariant":{"version":"2.2.4"}}}}},"react-calendar":{"version":"2.19.2","dependencies":{"get-user-locale":{"version":"1.3.0","dependencies":{"lodash.once":{"version":"4.1.1"}}},"merge-class-names":{"version":"1.3.0"},"prop-types":{"version":"15.7.2"},"react-lifecycles-compat":{"version":"3.0.4"}}},"react-countup":{"version":"3.0.3","dependencies":{"countup.js":{"version":"1.9.3"}}},"react-dom":{"version":"16.8.6","dependencies":{"loose-envify":{"version":"1.4.0"},"object-assign":{"version":"4.1.1"},"prop-types":{"version":"15.7.2"},"scheduler":{"version":"0.13.6"}}},"react-draft-wysiwyg":{"version":"1.13.2","dependencies":{"classnames":{"version":"2.2.6"},"draftjs-utils":{"version":"0.9.4"},"html-to-draftjs":{"version":"1.4.0"},"linkify-it":{"version":"2.2.0","dependencies":{"uc.micro":{"version":"1.0.6"}}},"prop-types":{"version":"15.7.2"}}},"react-dropzone":{"version":"10.2.1","dependencies":{"attr-accept":{"version":"2.0.0"},"file-selector":{"version":"0.1.12","dependencies":{"tslib":{"version":"1.10.0"}}},"prop-types":{"version":"15.7.2"}}},"react-event-listener":{"version":"0.6.6","dependencies":{"@babel/runtime":{"version":"7.7.4"},"prop-types":{"version":"15.7.2"},"warning":{"version":"4.0.2"}}},"react-google-maps":{"version":"9.4.5","dependencies":{"babel-runtime":{"version":"6.26.0","dependencies":{"core-js":{"version":"2.5.7"},"regenerator-runtime":{"version":"0.11.1"}}},"can-use-dom":{"version":"0.1.0"},"google-maps-infobox":{"version":"2.0.0"},"invariant":{"version":"2.2.4"},"lodash":{"version":"4.17.15"},"marker-clusterer-plus":{"version":"2.1.4"},"markerwithlabel":{"version":"2.0.2"},"prop-types":{"version":"15.7.2"},"recompose":{"version":"0.26.0","dependencies":{"change-emitter":{"version":"0.1.6"},"fbjs":{"version":"0.8.17"},"hoist-non-react-statics":{"version":"2.5.5"},"symbol-observable":{"version":"1.2.0"}}},"warning":{"version":"3.0.0","dependencies":{"loose-envify":{"version":"1.4.0"}}},"scriptjs":{"version":"2.5.9"}}},"react-helmet":{"version":"6.0.0-beta","dependencies":{"object-assign":{"version":"4.1.1"},"prop-types":{"version":"15.7.2"},"react-fast-compare":{"version":"2.0.4"},"react-side-effect":{"version":"1.2.0","dependencies":{"shallowequal":{"version":"1.1.0"}}}}},"react-input-range":{"version":"1.3.0","dependencies":{"autobind-decorator":{"version":"1.4.3"},"prop-types":{"version":"15.7.2"}}},"react-intl":{"version":"2.4.0","dependencies":{"intl-format-cache":{"version":"2.2.9"},"intl-messageformat":{"version":"2.2.0","dependencies":{"intl-messageformat-parser":{"version":"1.4.0"}}},"intl-relativeformat":{"version":"2.2.0","dependencies":{"intl-messageformat":{"version":"2.2.0"}}},"invariant":{"version":"2.2.4"}}},"react-ionicons":{"version":"2.1.6","dependencies":{"prop-types":{"version":"15.5.10","dependencies":{"fbjs":{"version":"0.8.17"},"loose-envify":{"version":"1.4.0"}}},"react":{"version":"15.4.2","dependencies":{"fbjs":{"version":"0.8.17"},"loose-envify":{"version":"1.4.0"},"object-assign":{"version":"4.1.1"}}},"react-dom":{"version":"15.4.2","dependencies":{"fbjs":{"version":"0.8.17"},"loose-envify":{"version":"1.4.0"},"object-assign":{"version":"4.1.1"}}},"styled-components":{"version":"2.2.3","dependencies":{"buffer":{"version":"5.4.3","dependencies":{"base64-js":{"version":"1.3.1"},"ieee754":{"version":"1.1.13"}}},"css-to-react-native":{"version":"2.3.2","dependencies":{"camelize":{"version":"1.0.0"},"css-color-keywords":{"version":"1.0.0"},"postcss-value-parser":{"version":"3.3.1"}}},"fbjs":{"version":"0.8.17"},"is-function":{"version":"1.0.1"},"is-plain-object":{"version":"2.0.4","dependencies":{"isobject":{"version":"3.0.1"}}},"prop-types":{"version":"15.7.2"},"hoist-non-react-statics":{"version":"1.2.0"},"supports-color":{"version":"3.2.3","dependencies":{"has-flag":{"version":"1.0.0"}}},"stylis":{"version":"3.5.4"}}}}},"react-jss":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"@emotion/is-prop-valid":{"version":"0.7.3","dependencies":{"@emotion/memoize":{"version":"0.7.1"}}},"css-jss":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"jss":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"csstype":{"version":"2.6.7"},"is-in-browser":{"version":"1.1.3"},"tiny-warning":{"version":"1.0.3"}}},"jss-preset-default":{"version":"10.0.4"}}},"hoist-non-react-statics":{"version":"3.3.0"},"is-in-browser":{"version":"1.1.3"},"jss-preset-default":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"jss-plugin-compose":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"jss":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"csstype":{"version":"2.6.7"},"is-in-browser":{"version":"1.1.3"},"tiny-warning":{"version":"1.0.3"}}},"tiny-warning":{"version":"1.0.3"}}},"jss-plugin-expand":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"jss":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"csstype":{"version":"2.6.7"},"is-in-browser":{"version":"1.1.3"},"tiny-warning":{"version":"1.0.3"}}}}},"jss-plugin-extend":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"jss":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"csstype":{"version":"2.6.7"},"is-in-browser":{"version":"1.1.3"},"tiny-warning":{"version":"1.0.3"}}},"tiny-warning":{"version":"1.0.3"}}},"jss-plugin-rule-value-observable":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"jss":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"csstype":{"version":"2.6.7"},"is-in-browser":{"version":"1.1.3"},"tiny-warning":{"version":"1.0.3"}}},"symbol-observable":{"version":"1.2.0"}}},"jss-plugin-template":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"jss":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"csstype":{"version":"2.6.7"},"is-in-browser":{"version":"1.1.3"},"tiny-warning":{"version":"1.0.3"}}},"tiny-warning":{"version":"1.0.3"}}},"jss":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"csstype":{"version":"2.6.7"},"is-in-browser":{"version":"1.1.3"},"tiny-warning":{"version":"1.0.3"}}},"jss-plugin-camel-case":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"hyphenate-style-name":{"version":"1.0.3"},"jss":{"version":"10.0.4"}}},"jss-plugin-default-unit":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"jss":{"version":"10.0.4"}}},"jss-plugin-global":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"jss":{"version":"10.0.4"}}},"jss-plugin-nested":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"jss":{"version":"10.0.4"},"tiny-warning":{"version":"1.0.3"}}},"jss-plugin-props-sort":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"jss":{"version":"10.0.4"}}},"jss-plugin-rule-value-function":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"jss":{"version":"10.0.4"}}},"jss-plugin-vendor-prefixer":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"css-vendor":{"version":"2.0.7"},"jss":{"version":"10.0.4"}}}}},"prop-types":{"version":"15.7.2"},"jss":{"version":"10.0.4","dependencies":{"@babel/runtime":{"version":"7.7.4"},"csstype":{"version":"2.6.7"},"is-in-browser":{"version":"1.1.3"},"tiny-warning":{"version":"1.0.3"}}},"shallow-equal":{"version":"1.2.0"},"theming":{"version":"3.2.0","dependencies":{"hoist-non-react-statics":{"version":"3.3.0"},"prop-types":{"version":"15.7.2"},"react-display-name":{"version":"0.2.5"},"tiny-warning":{"version":"1.0.3"}}},"tiny-warning":{"version":"1.0.3"}}},"react-loadable":{"version":"5.5.0","dependencies":{"prop-types":{"version":"15.7.2"}}},"react-loading-bar":{"version":"0.0.7","dependencies":{"shallowequal":{"version":"0.2.2","dependencies":{"lodash.keys":{"version":"3.1.2","dependencies":{"lodash._getnative":{"version":"3.9.1"},"lodash.isarguments":{"version":"3.1.0"},"lodash.isarray":{"version":"3.0.4"}}}}}}},"react-markdown":{"version":"4.3.1","dependencies":{"html-to-react":{"version":"1.4.2","dependencies":{"domhandler":{"version":"3.0.0","dependencies":{"domelementtype":{"version":"2.0.1"}}},"htmlparser2":{"version":"4.0.0","dependencies":{"domelementtype":{"version":"2.0.1"},"domhandler":{"version":"3.0.0"},"domutils":{"version":"2.0.0","dependencies":{"dom-serializer":{"version":"0.2.2","dependencies":{"domelementtype":{"version":"2.0.1"},"entities":{"version":"2.0.0"}}},"domelementtype":{"version":"2.0.1"},"domhandler":{"version":"3.0.0"}}},"entities":{"version":"2.0.0"}}},"lodash.camelcase":{"version":"4.3.0"},"ramda":{"version":"0.26.1"}}},"mdast-add-list-metadata":{"version":"1.0.1","dependencies":{"unist-util-visit-parents":{"version":"1.1.2"}}},"prop-types":{"version":"15.7.2"},"react-is":{"version":"16.12.0"},"remark-parse":{"version":"5.0.0","dependencies":{"collapse-white-space":{"version":"1.0.5"},"is-alphabetical":{"version":"1.0.3"},"is-decimal":{"version":"1.0.3"},"is-whitespace-character":{"version":"1.0.3"},"is-word-character":{"version":"1.0.3"},"markdown-escapes":{"version":"1.0.3"},"parse-entities":{"version":"1.2.2","dependencies":{"character-entities":{"version":"1.2.3"},"character-entities-legacy":{"version":"1.1.3"},"character-reference-invalid":{"version":"1.1.3"},"is-alphanumerical":{"version":"1.0.3","dependencies":{"is-alphabetical":{"version":"1.0.3"},"is-decimal":{"version":"1.0.3"}}},"is-decimal":{"version":"1.0.3"},"is-hexadecimal":{"version":"1.0.3"}}},"repeat-string":{"version":"1.6.1"},"state-toggle":{"version":"1.0.2"},"trim":{"version":"0.0.1"},"trim-trailing-lines":{"version":"1.1.2"},"unherit":{"version":"1.1.2","dependencies":{"inherits":{"version":"2.0.3"},"xtend":{"version":"4.0.2"}}},"unist-util-remove-position":{"version":"1.1.4","dependencies":{"unist-util-visit":{"version":"1.4.1"}}},"vfile-location":{"version":"2.0.6"},"xtend":{"version":"4.0.2"}}},"unified":{"version":"6.2.0","dependencies":{"bail":{"version":"1.0.4"},"extend":{"version":"3.0.2"},"is-plain-obj":{"version":"1.1.0"},"trough":{"version":"1.0.4"},"vfile":{"version":"2.3.0","dependencies":{"replace-ext":{"version":"1.0.0"},"unist-util-stringify-position":{"version":"1.1.2"},"vfile-message":{"version":"1.1.1","dependencies":{"unist-util-stringify-position":{"version":"1.1.2"}}},"is-buffer":{"version":"1.1.6"}}},"x-is-string":{"version":"0.1.0"}}},"unist-util-visit":{"version":"1.4.1","dependencies":{"unist-util-visit-parents":{"version":"2.1.2","dependencies":{"unist-util-is":{"version":"3.0.0"}}}}},"xtend":{"version":"4.0.2"}}},"react-modal":{"version":"3.11.1","dependencies":{"exenv":{"version":"1.2.2"},"prop-types":{"version":"15.7.2"},"react-lifecycles-compat":{"version":"3.0.4"},"warning":{"version":"4.0.3","dependencies":{"loose-envify":{"version":"1.4.0"}}}}},"react-number-format":{"version":"3.6.2","dependencies":{"prop-types":{"version":"15.7.2"}}},"react-popper":{"version":"0.10.4","dependencies":{"popper.js":{"version":"1.16.0"},"prop-types":{"version":"15.7.2"}}},"react-redux":{"required":{"_requested":{"name":"react-redux"},"author":{"name":"Dan Abramov"},"dependencies":{"@babel/runtime":{"_requested":{"name":"@babel/runtime"},"name":"@babel/runtime","version":"7.7.4"},"invariant":{"_requested":{"name":"invariant"},"author":{"name":"Andres Suarez"},"name":"invariant","version":"2.2.4"},"loose-envify":{"_requested":{"name":"loose-envify"},"name":"loose-envify","version":"1.4.0"},"prop-types":{"_requested":{"name":"prop-types"},"name":"prop-types","version":"15.7.2"},"react-is":{"_requested":{"name":"react-is"},"name":"react-is","version":"16.12.0"},"hoist-non-react-statics":{"_requested":{"name":"hoist-non-react-statics"},"author":{"name":"Michael Ridgway"},"dependencies":{"react-is":{"_requested":{"name":"react-is"},"name":"react-is","version":"16.12.0"}},"name":"hoist-non-react-statics","version":"3.3.2"}},"name":"react-redux","version":"7.0.2"}},"react-router-dom":{"version":"5.0.1","dependencies":{"@babel/runtime":{"version":"7.7.4"},"loose-envify":{"version":"1.4.0"},"prop-types":{"version":"15.7.2"},"react-router":{"version":"5.0.1","dependencies":{"@babel/runtime":{"version":"7.7.4"},"loose-envify":{"version":"1.4.0"},"mini-create-react-context":{"version":"0.3.2","dependencies":{"@babel/runtime":{"version":"7.7.4"},"gud":{"version":"1.0.0"},"tiny-warning":{"version":"1.0.3"}}},"prop-types":{"version":"15.7.2"},"react-is":{"version":"16.12.0"},"history":{"version":"4.10.1","dependencies":{"@babel/runtime":{"version":"7.7.4"},"loose-envify":{"version":"1.4.0"},"resolve-pathname":{"version":"3.0.0"},"value-equal":{"version":"1.0.1"},"tiny-invariant":{"version":"1.0.6"},"tiny-warning":{"version":"1.0.3"}}},"hoist-non-react-statics":{"version":"3.3.2","dependencies":{"react-is":{"version":"16.12.0"}}},"path-to-regexp":{"version":"1.8.0","dependencies":{"isarray":{"version":"0.0.1"}}},"tiny-invariant":{"version":"1.0.6"},"tiny-warning":{"version":"1.0.3"}}},"history":{"version":"4.10.1","dependencies":{"@babel/runtime":{"version":"7.7.4"},"loose-envify":{"version":"1.4.0"},"resolve-pathname":{"version":"3.0.0"},"value-equal":{"version":"1.0.1"},"tiny-invariant":{"version":"1.0.6"},"tiny-warning":{"version":"1.0.3"}}},"tiny-invariant":{"version":"1.0.6"},"tiny-warning":{"version":"1.0.3"}}},"react-select":{"version":"3.0.8","dependencies":{"@babel/runtime":{"version":"7.7.4"},"@emotion/cache":{"version":"10.0.27","dependencies":{"@emotion/sheet":{"version":"0.9.4"},"@emotion/stylis":{"version":"0.8.5"},"@emotion/utils":{"version":"0.11.3"},"@emotion/weak-memoize":{"version":"0.2.5"}}},"@emotion/core":{"version":"10.0.27","dependencies":{"@babel/runtime":{"version":"7.7.4"},"@emotion/cache":{"version":"10.0.27"},"@emotion/css":{"version":"10.0.27"},"@emotion/serialize":{"version":"0.11.15","dependencies":{"@emotion/hash":{"version":"0.7.4"},"@emotion/memoize":{"version":"0.7.4"},"@emotion/unitless":{"version":"0.7.5"},"@emotion/utils":{"version":"0.11.3"},"csstype":{"version":"2.6.7"}}},"@emotion/sheet":{"version":"0.9.4"},"@emotion/utils":{"version":"0.11.3"}}},"@emotion/css":{"version":"10.0.27","dependencies":{"@emotion/serialize":{"version":"0.11.15"},"@emotion/utils":{"version":"0.11.3"},"babel-plugin-emotion":{"version":"10.0.27","dependencies":{"@babel/helper-module-imports":{"version":"7.7.4","dependencies":{"@babel/types":{"version":"7.7.4","dependencies":{"lodash":{"version":"4.17.15"},"to-fast-properties":{"version":"2.0.0"},"esutils":{"version":"2.0.2"}}}}},"@emotion/serialize":{"version":"0.11.15"},"@emotion/hash":{"version":"0.7.4"},"@emotion/memoize":{"version":"0.7.4"},"babel-plugin-macros":{"version":"2.8.0","dependencies":{"@babel/runtime":{"version":"7.7.4"},"cosmiconfig":{"version":"6.0.0","dependencies":{"@types/parse-json":{"version":"4.0.0"},"parse-json":{"version":"5.0.0","dependencies":{"@babel/code-frame":{"version":"7.8.3","dependencies":{"@babel/highlight":{"version":"7.8.3","dependencies":{"chalk":{"version":"2.4.2"},"esutils":{"version":"2.0.2"},"js-tokens":{"version":"4.0.0"}}}}},"error-ex":{"version":"1.3.2","dependencies":{"is-arrayish":{"version":"0.2.1"}}},"json-parse-better-errors":{"version":"1.0.2"},"lines-and-columns":{"version":"1.1.6"}}},"path-type":{"version":"4.0.0"},"import-fresh":{"version":"3.2.1","dependencies":{"parent-module":{"version":"1.0.1","dependencies":{"callsites":{"version":"3.1.0"}}},"resolve-from":{"version":"4.0.0"}}},"yaml":{"version":"1.7.2","dependencies":{"@babel/runtime":{"version":"7.7.4"}}}}},"resolve":{"version":"1.13.1","dependencies":{"path-parse":{"version":"1.0.6"}}}}},"babel-plugin-syntax-jsx":{"version":"6.18.0"},"convert-source-map":{"version":"1.6.0","dependencies":{"safe-buffer":{"version":"5.1.1"}}},"escape-string-regexp":{"version":"1.0.5"},"find-root":{"version":"1.1.0"},"source-map":{"version":"0.5.7"}}}}},"memoize-one":{"version":"5.1.1"},"prop-types":{"version":"15.7.2"},"react-input-autosize":{"version":"2.2.2","dependencies":{"prop-types":{"version":"15.7.2"}}},"react-transition-group":{"version":"2.9.0","dependencies":{"loose-envify":{"version":"1.4.0"},"prop-types":{"version":"15.7.2"},"react-lifecycles-compat":{"version":"3.0.4"},"dom-helpers":{"version":"3.4.0","dependencies":{"@babel/runtime":{"version":"7.7.4"}}}}}}},"react-slick":{"version":"0.23.2","dependencies":{"classnames":{"version":"2.2.6"},"enquire.js":{"version":"2.1.6"},"json2mq":{"version":"0.2.0","dependencies":{"string-convert":{"version":"0.2.1"}}},"lodash.debounce":{"version":"4.0.8"},"prettier":{"version":"1.19.1"},"resize-observer-polyfill":{"version":"1.5.1"}}},"react-swipeable-views":{"version":"0.12.18","dependencies":{"prop-types":{"version":"15.7.2"},"react-swipeable-views-core":{"version":"0.12.17","dependencies":{"@babel/runtime":{"version":"7.0.0","dependencies":{"regenerator-runtime":{"version":"0.12.1"}}},"warning":{"version":"4.0.2"}}},"react-swipeable-views-utils":{"version":"0.12.18","dependencies":{"fbjs":{"version":"0.8.17"},"keycode":{"version":"2.2.0"},"prop-types":{"version":"15.7.2"},"react-event-listener":{"version":"0.6.6"},"react-swipeable-views-core":{"version":"0.12.17"},"@babel/runtime":{"version":"7.0.0","dependencies":{"regenerator-runtime":{"version":"0.12.1"}}}}},"@babel/runtime":{"version":"7.0.0","dependencies":{"regenerator-runtime":{"version":"0.12.1"}}},"dom-helpers":{"version":"3.4.0","dependencies":{"@babel/runtime":{"version":"7.7.4","dependencies":{"regenerator-runtime":{"version":"0.13.3"}}}}},"warning":{"version":"4.0.2"}}},"react-syntax-highlighter":{"version":"7.0.4","dependencies":{"babel-runtime":{"version":"6.26.0"},"highlight.js":{"version":"9.12.0"},"lowlight":{"version":"1.9.2","dependencies":{"fault":{"version":"1.0.3","dependencies":{"format":{"version":"0.2.2"}}},"highlight.js":{"version":"9.12.0"}}},"prismjs":{"version":"1.17.1","dependencies":{"clipboard":{"version":"2.0.4","dependencies":{"good-listener":{"version":"1.2.2","dependencies":{"delegate":{"version":"3.2.0"}}},"select":{"version":"1.1.2"},"tiny-emitter":{"version":"2.1.0"}}}}},"refractor":{"version":"2.10.0","dependencies":{"hastscript":{"version":"5.1.1","dependencies":{"comma-separated-tokens":{"version":"1.0.7"},"hast-util-parse-selector":{"version":"2.2.3"},"property-information":{"version":"5.3.0","dependencies":{"xtend":{"version":"4.0.2"}}},"space-separated-tokens":{"version":"1.1.4"}}},"parse-entities":{"version":"1.2.2"},"prismjs":{"version":"1.17.1"}}}}},"react-text-mask":{"version":"5.4.3","dependencies":{"prop-types":{"version":"15.7.2"}}},"react-ultimate-pagination":{"version":"1.2.0","dependencies":{"prop-types":{"version":"15.7.2"},"ultimate-pagination":{"version":"1.0.0"}}},"recharts":{"version":"1.8.5","dependencies":{"classnames":{"version":"2.2.6"},"core-js":{"version":"2.6.10"},"d3-interpolate":{"version":"1.4.0","dependencies":{"d3-color":{"version":"1.4.0"}}},"d3-scale":{"version":"2.2.2","dependencies":{"d3-array":{"version":"1.2.4"},"d3-collection":{"version":"1.0.7"},"d3-format":{"version":"1.4.2"},"d3-interpolate":{"version":"1.4.0"},"d3-time":{"version":"1.1.0"},"d3-time-format":{"version":"2.2.2","dependencies":{"d3-time":{"version":"1.1.0"}}}}},"d3-shape":{"version":"1.3.7","dependencies":{"d3-path":{"version":"1.0.9"}}},"lodash":{"version":"4.17.15"},"prop-types":{"version":"15.7.2"},"react-resize-detector":{"version":"2.3.0","dependencies":{"lodash.debounce":{"version":"4.0.8"},"lodash.throttle":{"version":"4.1.1"},"prop-types":{"version":"15.7.2"},"resize-observer-polyfill":{"version":"1.5.1"}}},"react-smooth":{"version":"1.0.5","dependencies":{"lodash":{"version":"4.17.15"},"prop-types":{"version":"15.7.2"},"raf":{"version":"3.4.1","dependencies":{"performance-now":{"version":"2.1.0"}}},"react-transition-group":{"version":"2.9.0","dependencies":{"loose-envify":{"version":"1.4.0"},"prop-types":{"version":"15.7.2"},"react-lifecycles-compat":{"version":"3.0.4"},"dom-helpers":{"version":"3.4.0","dependencies":{"@babel/runtime":{"version":"7.7.4"}}}}}}},"recharts-scale":{"version":"0.4.3","dependencies":{"decimal.js-light":{"version":"2.5.0"}}},"reduce-css-calc":{"version":"1.3.0","dependencies":{"math-expression-evaluator":{"version":"1.2.17"},"balanced-match":{"version":"0.4.2"},"reduce-function-call":{"version":"1.0.3","dependencies":{"balanced-match":{"version":"1.0.0"}}}}}}},"recompose":{"version":"0.28.2","dependencies":{"change-emitter":{"version":"0.1.6"},"fbjs":{"version":"0.8.17"},"react-lifecycles-compat":{"version":"3.0.4"},"@babel/runtime":{"version":"7.0.0-beta.56","dependencies":{"regenerator-runtime":{"version":"0.12.1"}}},"hoist-non-react-statics":{"version":"2.5.5"},"symbol-observable":{"version":"1.2.0"}}},"redux":{"version":"4.0.1","dependencies":{"loose-envify":{"version":"1.4.0"},"symbol-observable":{"version":"1.2.0"}}},"redux-form":{"version":"8.2.0","dependencies":{"@babel/runtime":{"version":"7.7.4"},"es6-error":{"version":"4.1.1"},"invariant":{"version":"2.2.4"},"is-promise":{"version":"2.1.0"},"lodash":{"version":"4.17.15"},"lodash-es":{"version":"4.17.15"},"prop-types":{"version":"15.7.2"},"react-is":{"version":"16.12.0"},"react-lifecycles-compat":{"version":"3.0.4"},"hoist-non-react-statics":{"version":"3.3.2","dependencies":{"react-is":{"version":"16.12.0"}}}}},"redux-immutable":{"version":"4.0.0"},"redux-saga":{"version":"1.0.2","dependencies":{"@redux-saga/core":{"version":"1.1.3","dependencies":{"@babel/runtime":{"version":"7.7.4"},"redux":{"version":"4.0.4","dependencies":{"loose-envify":{"version":"1.4.0"},"symbol-observable":{"version":"1.2.0"}}},"@redux-saga/deferred":{"version":"1.1.2"},"@redux-saga/delay-p":{"version":"1.1.2","dependencies":{"@redux-saga/symbols":{"version":"1.1.2"}}},"@redux-saga/is":{"version":"1.1.2","dependencies":{"@redux-saga/symbols":{"version":"1.1.2"},"@redux-saga/types":{"version":"1.1.0"}}},"@redux-saga/symbols":{"version":"1.1.2"},"@redux-saga/types":{"version":"1.1.0"},"typescript-tuple":{"version":"2.2.1","dependencies":{"typescript-compare":{"version":"0.0.2","dependencies":{"typescript-logic":{"version":"0.0.0"}}}}}}}}},"reselect":{"version":"4.0.0"},"sanitize.css":{"version":"8.0.0"},"serve-favicon":{"version":"2.5.0","dependencies":{"etag":{"version":"1.8.1"},"fresh":{"version":"0.5.2"},"parseurl":{"version":"1.3.3"},"safe-buffer":{"version":"5.1.1"},"ms":{"version":"2.1.1"}}},"slick-carousel":{"version":"1.8.1"},"warning":{"version":"4.0.2","dependencies":{"loose-envify":{"version":"1.4.0"}}},"whatwg-fetch":{"version":"2.0.4"}}} \ No newline at end of file