Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • shreyp2305/dbms-inventory-manager
1 result
Show changes
Commits on Source (2)
......@@ -4,16 +4,18 @@ import { Chart } from "react-google-charts";
export const OrgChart = () => {
const [info, setInfo] = useState();
const [infoForMemberChart, setInfoForMemberChart] = useState();
useEffect(() => {
// Fetch user information when the component mounts
getOrgStats();
getOrgStatsByMember();
}, []); // Empty dependency array ensures the effect runs once
const getOrgStats = async () => {
try {
const response = await Axios.get(
"http://localhost:8080/organization/all/stats"
"http://localhost:8080/organization/all/stats/category"
);
const some = [["Location", "Number of Items"], ...response.data.data];
setInfo(some);
......@@ -22,18 +24,43 @@ export const OrgChart = () => {
}
};
const options = {
const getOrgStatsByMember = async () => {
try {
const response = await Axios.get(
"http://localhost:8080/organization/all/stats/members"
);
const some = [["Task", "Hours per Day"], ...response.data.data];
setInfoForMemberChart(some);
} catch (error) {
console.error("Error fetching stats:", error);
}
};
const options1 = {
title: "Organizations by Category",
};
const options2 = {
title: "Organizations by Popularity",
};
return (
<Chart
chartType="PieChart"
data={info}
options={options}
width={"100%"}
height={"400px"}
/>
<div>
<Chart
chartType="PieChart"
data={info}
options={options1}
width={"100%"}
height={"400px"}
/>
<Chart
chartType="PieChart"
data={infoForMemberChart}
options={options2}
width={"100%"}
height={"400px"}
/>
</div>
);
};
export default OrgChart;
......@@ -24,12 +24,12 @@ public class CustomOrganizationRepository
return (List<Object[]>)q.getResultList();
}
// @Transactional
// public List<Object[]> countOrganizationsByMemberCount()
// {
// String query = "SELECT category, COUNT(*) FROM Organization GROUP BY category";
// Query q = this.entityManager.createNativeQuery(query);
// return (List<Object[]>)q.getResultList();
// }
@Transactional
public List<Object[]> countOrganizationsByMemberCount()
{
String query = "SELECT category, SUM(member_count) AS total_members FROM ORGANIZATION GROUP BY category;";
Query q = this.entityManager.createNativeQuery(query);
return (List<Object[]>)q.getResultList();
}
}
\ No newline at end of file
......@@ -44,8 +44,8 @@ public class OrgController {
return orgRepository.findAll();
}
@GetMapping(path="/all/stats")
public @ResponseBody Map<String, Object> getAllOrgStats() {
@GetMapping(path="/all/stats/category")
public @ResponseBody Map<String, Object> getAllOrgStatsByCategory() {
// This returns a JSON with statistics about how many organziations are in each category
List<Object[]> categoryCounts = customOrganizationRepository.countOrganizationsByCategory();
Map<String, Object> response = new HashMap<>();
......@@ -58,4 +58,18 @@ public class OrgController {
return response;
}
@GetMapping(path="/all/stats/members")
public @ResponseBody Map<String, Object> getAllOrgStatsByMembers() {
// This returns a JSON with statistics about how many organziations are in each category
List<Object[]> categoryCounts = customOrganizationRepository.countOrganizationsByMemberCount();
Map<String, Object> response = new HashMap<>();
// for (Object[] row : categoryCounts) {
// Organization.Category category = (Organization.Category) row[0];
// Long count = (Long) row[1];
// stats.put(category.toString(), count);
// }
response.put("data", categoryCounts);
return response;
}
}