src/pages/Dashboard.jsx   A
last analyzed

Complexity

Total Complexity 3
Complexity/F 3

Size

Lines of Code 96
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 81
dl 0
loc 96
rs 10
c 0
b 0
f 0
wmc 3
mnd 2
bc 2
fnc 1
bpm 2
cpm 3
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A Dashboard.jsx ➔ fetchData 0 35 3
1
import React, { useEffect, useState } from "react";
2
import scooter from "../models/scooters";
3
import users from "../models/users";
4
import cities from "../models/cities";
5
import { Databox, DataLists } from "../components";
6
const Dashboard = () => {
7
  const [data, setData] = useState({
8
    totalScooters: 0,
9
    liveScooters: 0,
10
    chargingScooters: 0,
11
    maintenceScooters: 0,
12
    totalUsers: 0,
13
    activeUsers: 0,
14
    totalAreas: 0,
15
    totalParkingZones: 0,
16
    totalBonus: 0,
17
    totalNoParking: 0,
18
  });
19
20
  useEffect(() => {
21
    fetchData();
22
  }, []);
23
24
  const counter = (data, prop, type) => {
25
    let count = 0;
26
    data.forEach((element) => {
27
      if (element[type] === prop) {
28
        count++;
29
      }
30
    });
31
    return count;
32
  };
33
34
  const areaCounter = (data, prop, type, type2) => {
35
    let count = 0;
36
    data.forEach((element) => {
37
      element[type].forEach((e) => {
38
        if (e[type2] === prop) {
39
          count++;
40
        }
41
      });
42
    });
43
    return count;
44
  };
45
46
  async function fetchData() {
47
    const scooterOverview = await scooter.getScootersOverview();
48
    const scooterData = scooterOverview.scootersOverview;
49
    const usersOverview = await users.getUsers();
50
    const userData = usersOverview.users;
51
    const citiesOverview = await cities.getCities();
52
    const cityData = citiesOverview.cities;
53
    const liveScooters = counter(scooterData, "In use", "status");
54
    const chargeScooters = counter(scooterData, "Unavailable", "status");
55
    const maintenanceScooter = counter(scooterData, "Maintenance", "status");
56
    const parkingZones = areaCounter(
57
      cityData,
58
      "parkingZone",
59
      "zones",
60
      "zoneType"
61
    );
62
    const bonusZone = areaCounter(
63
      cityData,
64
      "bonusParkingZone",
65
      "zones",
66
      "zoneType"
67
    );
68
    const noPark = areaCounter(cityData, "noParkingZone", "zones", "zoneType");
69
    setData({
70
      totalScooters: scooterData.length,
71
      liveScooters: liveScooters,
72
      chargingScooters: chargeScooters,
73
      maintenceScooters: maintenanceScooter,
74
      totalUsers: userData.length,
75
      activeUsers: userData.length,
76
      totalAreas: cityData.length,
77
      totalParkingZones: parkingZones,
78
      totalBonus: bonusZone,
79
      totalNoParking: noPark,
80
    });
81
  }
82
  return (
83
    <div className="w-full px-5">
84
      <h1 className="text-xl font-semibold py-2">Dashboard</h1>
85
      <div className="w-full flex justify-center relative ">
86
        <Databox data={data} />
87
      </div>
88
      <div>
89
        <DataLists data={data} />
90
      </div>
91
    </div>
92
  );
93
};
94
95
export default Dashboard;
96