Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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