src/pages/Customers.jsx   A
last analyzed

Complexity

Total Complexity 6
Complexity/F 6

Size

Lines of Code 120
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 98
dl 0
loc 120
rs 10
c 0
b 0
f 0
wmc 6
mnd 5
bc 5
fnc 1
bpm 5
cpm 6
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A Customers.jsx ➔ fetchData 0 5 1
1
import React from "react";
2
import { useState, useEffect } from "react";
3
import { CustomerList, EditForm, Filterbar, LogForm } from "../components";
4
import users from "../models/users";
5
const Customers = () => {
6
  const [filterPhrase, setFilterPhrase] = useState("");
7
  const [userData, setUserData] = useState(users.users);
8
  const [logData, setLogData] = useState({});
9
  const [selectedUser, setSelectedUser] = useState();
10
  const [editForm, setEditForm] = useState(false);
11
  const [displayForm, setDisplayForm] = useState(false);
12
13
  useEffect(() => {
14
    fetchData();
15
  }, []);
16
17
  async function fetchData() {
18
    const res = await users.getUsers();
19
    const data = res.users;
20
    setUserData(data);
21
  }
22
23
  const handleRemoveAccount = async (userID) => {
24
    await users.deleteUsers(userID);
25
    await fetchData();
26
  };
27
28
  const handleAccountEdit = async () => {
29
    setEditForm(false);
30
    await users.editUsers(selectedUser);
31
    await fetchData();
32
  };
33
34
  const handleForm = () => {
35
    //event.preventDefault();
36
37
    if (displayForm) {
38
      setDisplayForm(false);
39
    } else {
40
      setDisplayForm(true);
41
    }
42
  };
43
44
  const overlay = () => {
45
    let state = { click: "auto", backdrop: "blur(0px)" };
46
    if (displayForm || editForm) {
47
      state = { click: "none", backdrop: "blur(4px)" };
48
    }
49
    return state;
50
  };
51
52
  const handleEditForm = () => {
53
    if (editForm) {
54
      setEditForm(false);
55
    } else {
56
      setEditForm(true);
57
    }
58
  };
59
60
  return (
61
    <>
62
      {editForm ? (
63
        <div
64
          className="fixed top-1/2 left-1/2 z-10
65
        transform -translate-x-1/2 -translate-y-1/2"
66
        >
67
          <EditForm
68
            handleEditForm={handleEditForm}
69
            selectedUser={selectedUser}
70
            setSelectedUser={setSelectedUser}
71
            handleAccountEdit={handleAccountEdit}
72
          />
73
        </div>
74
      ) : null}
75
      {displayForm ? (
76
        <div
77
          className="fixed top-1/2 left-1/2 z-10
78
          transform -translate-x-1/2 -translate-y-1/2"
79
        >
80
          <LogForm handleForm={handleForm} logData={logData} />
81
        </div>
82
      ) : null}
83
      <div
84
        style={{
85
          pointerEvents: overlay().click,
86
          filter: overlay().backdrop,
87
        }}
88
        className="flex flex-col w-full px-11 min-h-screen"
89
      >
90
        <div className="text-4xl font-semibold p-3">
91
          <h1>Customers</h1>
92
        </div>
93
        <div className="flex flex-row justify-between">
94
          <div className="py-3">
95
            <Filterbar
96
              filterPhrase={filterPhrase}
97
              setFilterPhrase={setFilterPhrase}
98
              placeholder={"Filter Users"}
99
            />
100
          </div>
101
        </div>
102
        <div className="mt-5">
103
          <CustomerList
104
            userData={userData}
105
            filterPhrase={filterPhrase}
106
            handleForm={handleForm}
107
            handleEditForm={handleEditForm}
108
            setSelectedUser={setSelectedUser}
109
            selectedUser={selectedUser}
110
            setLogData={setLogData}
111
            handleRemoveAccount={handleRemoveAccount}
112
          />
113
        </div>
114
      </div>
115
    </>
116
  );
117
};
118
119
export default Customers;
120