Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 1158 | Rev 1583 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
import React from "react";
2
import { useEffect, useState } from "react";
3
import { useForm } from "react-hook-form";
4
import styled from "styled-components";
1158 stevensc 5
import { axios } from "../../../utils";
1 www 6
import Company from "./company/Company";
7
import Spinner from "../../../shared/loading-spinner/Spinner";
8
import AddCompanyModal from "./add-company-modal/AddCompanyModal";
1581 steven 9
import SearchList from "../../../components/SearchList";
1 www 10
 
11
const StyledSpinnerContainer = styled.div`
12
  position: absolute;
13
  left: 0;
14
  top: 0;
15
  width: 100%;
16
  height: 100%;
17
  background: rgba(255, 255, 255, 0.4);
18
  display: flex;
19
  justify-content: center;
20
  align-items: center;
21
  z-index: 300;
22
`;
23
 
24
const MyCompanies = (props) => {
25
  // backendVars destructuring
26
  const { companySizes, industries } = props.backendVars;
27
 
28
  // states
29
  const [companies, setCompanies] = useState([]);
30
  const [loading, setLoading] = useState(true);
31
  const [showAddCompanyModal, setShowCompanyModal] = useState(false);
32
 
33
  // React hook form
34
  const { register, getValues } = useForm();
35
 
36
  let axiosThrottle = null;
37
 
38
  useEffect(() => {
39
    fetchCompanies();
40
    return () => {
41
      clearTimeout(axiosThrottle);
42
    };
43
  }, []);
44
 
1158 stevensc 45
  const fetchCompanies = async (searchParam = '') => {
1 www 46
    setLoading(true);
47
    await axios
48
      .get(
1158 stevensc 49
        "/company/my-companies?search=" + searchParam)
1 www 50
      .then((response) => {
51
        const resData = response.data;
52
        if (resData.success) {
53
          setCompanies(resData.data);
54
        }
55
      });
56
    setLoading(false);
57
  };
58
 
59
  const handleSearch = () => {
60
    //  (getValues());
61
    clearTimeout(axiosThrottle);
62
    // setLoading(true);
63
    const searchValue = getValues("search");
64
    axiosThrottle = setTimeout(() => {
65
      fetchCompanies(searchValue);
66
    }, 500);
67
  };
68
 
69
  const handleShowAddCompanyModal = () => {
70
    setShowCompanyModal(!showAddCompanyModal);
71
  };
72
 
73
  return (
74
    <React.Fragment>
75
      <section className="companies-info">
76
        <div className="container">
1581 steven 77
          <SearchList
78
            title="Mis Empresas"
79
            fetchCallback={fetchCompanies}
80
            addTitle="Agregar"
81
            addCallback={handleShowAddCompanyModal}
82
          />
1 www 83
 
84
          <div className="companies-list">
85
            <div
86
              className="row"
87
              id="profiles-container"
88
              style={{
89
                position: "relative",
90
              }}
91
            >
1158 stevensc 92
              {
93
                companies.length
94
                  ?
95
                  companies.map(({ image, link_my_company, link_view, name, status }, id) => (
96
                    <Company
97
                      image={image}
98
                      link_my_company={link_my_company}
99
                      link_view={link_view}
100
                      name={name}
101
                      status={status}
102
                      key={id}
103
                    />
104
                  ))
105
                  :
106
                  <div style={{ margin: "auto", textAlign: "center" }}>
107
                    Ningún registro coincidio con su consulta
108
                  </div>
109
              }
1 www 110
              {loading && (
111
                <StyledSpinnerContainer>
112
                  <Spinner />
113
                </StyledSpinnerContainer>
114
              )}
115
            </div>
116
            {/* <!--product-feed-tab end--> */}
117
          </div>
118
        </div>
119
      </section>
120
 
121
      <AddCompanyModal
122
        show={showAddCompanyModal}
123
        onHide={handleShowAddCompanyModal}
124
        fetchCompanies={fetchCompanies}
125
        companySizes={companySizes}
126
        industries={industries}
127
      />
128
    </React.Fragment>
129
  );
130
};
131
 
132
export default MyCompanies;