diff --git a/couchdb/data/shards/00000000-7fffffff/testdata.1643440069.couch b/couchdb/data/shards/00000000-7fffffff/testdata.1643440069.couch
index 9e4db84..d8cf24a 100644
Binary files a/couchdb/data/shards/00000000-7fffffff/testdata.1643440069.couch and b/couchdb/data/shards/00000000-7fffffff/testdata.1643440069.couch differ
diff --git a/couchdb/data/shards/80000000-ffffffff/testdata.1643440069.couch b/couchdb/data/shards/80000000-ffffffff/testdata.1643440069.couch
index 0ed11ec..f938573 100644
Binary files a/couchdb/data/shards/80000000-ffffffff/testdata.1643440069.couch and b/couchdb/data/shards/80000000-ffffffff/testdata.1643440069.couch differ
diff --git a/webserver/src/App.jsx b/webserver/src/App.jsx
index 7f1a00d..48f54e4 100644
--- a/webserver/src/App.jsx
+++ b/webserver/src/App.jsx
@@ -20,7 +20,7 @@ import { createMuiTheme, ThemeProvider } from '@material-ui/core'
import { Formik, Field, Form } from 'formik';
import { TextField, Button, Grid, FormRow, Checkbox, Radio, FormControlLabel, FormControl, FormLabel, RadioGroup, IconButton, InputAdornment } from "@material-ui/core";
import { AddCircleOutline, RemoveCircleOutline } from "@material-ui/icons";
-import { ProcessedDataProvider } from "./Pages/DashboardPage/ProcessedDataContext";
+import { ProcessedDataBucketProvider } from "./ProcessedDataBucketContext";
@@ -44,7 +44,7 @@ function App() {
-
+
@@ -55,7 +55,7 @@ function App() {
} />
-
+
diff --git a/webserver/src/DbContext.jsx b/webserver/src/DbContext.jsx
index 94eda13..7c7a682 100644
--- a/webserver/src/DbContext.jsx
+++ b/webserver/src/DbContext.jsx
@@ -1,5 +1,6 @@
import PouchDB from "pouchdb";
import React, { useContext, useState } from "react";
+import { ProcessedDataBucketContext } from "./ProcessedDataBucketContext";
const LocalDbContext = React.createContext();
const RemoteDbContext = React.createContext();
@@ -40,7 +41,10 @@ export function DbProvider({ children }) {
live: true,
retry: true,
})
- .on("change", function (change) { })
+ .on("change", function (change) {
+ const pdb = React.useContext(ProcessedDataBucketContext);
+ console.log(pdb);
+ })
.on("paused", function (info) { })
.on("active", function (info) { })
.on("error", function (err) {
diff --git a/webserver/src/Pages/DashboardPage/DashboardPage.jsx b/webserver/src/Pages/DashboardPage/DashboardPage.jsx
index b1a5969..d86efe3 100644
--- a/webserver/src/Pages/DashboardPage/DashboardPage.jsx
+++ b/webserver/src/Pages/DashboardPage/DashboardPage.jsx
@@ -3,67 +3,6 @@ import { useLocalDb } from "../../DbContext";
import { Bar, Chart } from "react-chartjs-2";
const DashboardPage = () => {
- const localdb = useLocalDb();
- let processed_data = {};
- localdb
- .allDocs({
- include_docs: true,
- })
- .then((result) => {
- console.log(result);
- result.rows.forEach((dbentry) => {
- let doc = dbentry.doc;
- console.log(doc);
- //if there's no processed data on a team yet, create a default data entry
- if (typeof processed_data[doc.team_name] === "undefined") {
- processed_data[doc.team_name] = {
- team_name: doc.team_name,
- alliance: doc.alliance,
- games_played: 0,
- climbs_none: 0,
- climbs_low: 0,
- climbs_mid: 0,
- climbs_high: 0,
- climbs_transverse: 0,
- points: 0,
- point_average: 0,
- num_disables: 0,
- disables_average: 0,
- num_flips: 0,
- flips_average: 0,
- fouls: 0,
- fouls_average: 0,
- fouls_tech: 0,
- fouls_tech_average: 0,
- };
- }
-
- let team_data = processed_data[doc.team_name];
- console.log(team_data);
- let new_team_data = {
- ...team_data,
- games_played: team_data.games_played + 1,
- num_climbs: team_data.num_climbs + (doc.climb == true ? 1 : 0),
- num_disables: team_data.num_disables + (doc.disabled == true ? 1 : 0),
- num_flips: team_data.num_flips + (doc.flipped_over == true ? 1 : 0),
- fouls: team_data.fouls + parseInt(doc.fouls),
- fouls_tech: team_data.fouls_tech + parseInt(doc.fouls_tech),
- inner_port: team_data.inner_port + parseInt(doc.inner_port),
- outer_port: team_data.outer_port + parseInt(doc.outer_port),
- lower_port: team_data.lower_port + parseInt(doc.lower_port),
- };
- console.log(new_team_data);
- });
- })
- .catch((err) => {
- console.log("Error Fetching Docs from Database!");
- console.log(err);
- });
- let datasets = [
- {
- data: [],
- },
- ];
//https://react-charts.js.org/examples/column
return ;
};
diff --git a/webserver/src/Pages/DashboardPage/ProcessedDataContext.jsx b/webserver/src/Pages/DashboardPage/ProcessedDataContext.jsx
deleted file mode 100644
index 2de95aa..0000000
--- a/webserver/src/Pages/DashboardPage/ProcessedDataContext.jsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import React, { useContext, useState } from "react";
-import { useLocalDb } from "../../DbContext";
-
-const ProcessedDataContext = React.createContext();
-export function useProcessedData() {
- return useContext(processedDataContext);
-}
-
-export function ProcessedDataProvider({ children }) {
- const [processedData, setProcessedData] = useState(
- {
- teamData: null,
- matchData: null,
- updateData: function () {
- const localdb = useLocalDb();
- // let processed_data = {};
- localdb
- .allDocs({
- include_docs: true,
- })
- .then((result) => {
- console.log(result);
- result.rows.forEach((dbentry) => {
- let doc = dbentry.doc;
- console.log(doc);
- //if there's no processed data on a team yet, create a default data entry
- if (typeof teamData[doc.team_name] === "undefined") {
- teamData[doc.team_name] = {
- team_name: doc.team_name,
- alliance: doc.alliance,
- games_played: 0,
- climbs_none: 0,
- climbs_low: 0,
- climbs_mid: 0,
- climbs_high: 0,
- climbs_transverse: 0,
- points: 0,
- point_average: 0,
- num_disables: 0,
- disables_average: 0,
- num_flips: 0,
- flips_average: 0,
- fouls: 0,
- fouls_average: 0,
- fouls_tech: 0,
- fouls_tech_average: 0,
- };
- }
-
- let thisTeamData = teamData[doc.team_name];
- console.log(thisTeamData);
- let new_team_data = {
- ...team_data,
- games_played: team_data.games_played + 1,
- num_climbs: team_data.num_climbs + (doc.climb == true ? 1 : 0),
- num_disables: team_data.num_disables + (doc.disabled == true ? 1 : 0),
- num_flips: team_data.num_flips + (doc.flipped_over == true ? 1 : 0),
- fouls: team_data.fouls + parseInt(doc.fouls),
- fouls_tech: team_data.fouls_tech + parseInt(doc.fouls_tech),
- inner_port: team_data.inner_port + parseInt(doc.inner_port),
- outer_port: team_data.outer_port + parseInt(doc.outer_port),
- lower_port: team_data.lower_port + parseInt(doc.lower_port),
- };
- console.log(new_team_data);
- });
- })
- .catch((err) => {
- console.log("Error Fetching Docs from Database!");
- console.log(err);
- });
- let datasets = [
- {
- data: [],
- },
- ];
- }
- }
- );
- //https://react-charts.js.org/examples/column
- return (
-
- {children}
-
- );
-};
\ No newline at end of file
diff --git a/webserver/src/ProcessedDataBucket.jsx b/webserver/src/ProcessedDataBucket.jsx
new file mode 100644
index 0000000..e80226b
--- /dev/null
+++ b/webserver/src/ProcessedDataBucket.jsx
@@ -0,0 +1,65 @@
+export class ProcessedDataBucket {
+ constructor() {
+ this.teamData = null;
+ this.matchData = null;
+ this.updateData = (db) => {
+ db.allDocs({
+ include_docs: true,
+ })
+ .then((result) => {
+ console.log(result);
+ result.rows.forEach((dbentry) => {
+ let doc = dbentry.doc;
+ console.log(doc);
+ //if there's no processed data on a team yet, create a default data entry
+ if (typeof this.teamData[doc.team_name] === "undefined") {
+ this.teamData[doc.team_name] = {
+ team_name: doc.team_name,
+ alliance: doc.alliance,
+ games_played: 0,
+ climbs_none: 0,
+ climbs_low: 0,
+ climbs_mid: 0,
+ climbs_high: 0,
+ climbs_transverse: 0,
+ points: 0,
+ point_average: 0,
+ num_disables: 0,
+ disables_average: 0,
+ num_flips: 0,
+ flips_average: 0,
+ fouls: 0,
+ fouls_average: 0,
+ fouls_tech: 0,
+ fouls_tech_average: 0,
+ };
+ }
+ let thisTeamData = this.teamData[doc.team_name];
+ console.log(thisTeamData);
+ let new_team_data = {
+ ...thisTeamData,
+ games_played: thisTeamData.games_played + 1,
+ num_climbs: thisTeamData.num_climbs + (doc.climb == true ? 1 : 0),
+ num_disables: thisTeamData.num_disables + (doc.disabled == true ? 1 : 0),
+ num_flips: thisTeamData.num_flips + (doc.flipped_over == true ? 1 : 0),
+ fouls: thisTeamData.fouls + parseInt(doc.fouls),
+ fouls_tech: thisTeamData.fouls_tech + parseInt(doc.fouls_tech),
+ inner_port: thisTeamData.inner_port + parseInt(doc.inner_port),
+ outer_port: thisTeamData.outer_port + parseInt(doc.outer_port),
+ lower_port: thisTeamData.lower_port + parseInt(doc.lower_port),
+ };
+ console.log(new_team_data);
+ });
+ })
+ .catch((err) => {
+ console.log("Error Fetching Docs from Database!");
+ console.log(err);
+ });
+ let datasets = [
+ {
+ data: [],
+ },
+ ];
+ };
+ }
+}
\ No newline at end of file
diff --git a/webserver/src/ProcessedDataBucketContext.jsx b/webserver/src/ProcessedDataBucketContext.jsx
new file mode 100644
index 0000000..5505607
--- /dev/null
+++ b/webserver/src/ProcessedDataBucketContext.jsx
@@ -0,0 +1,18 @@
+import React, { useContext, useState } from "react";
+import { useLocalDb } from "./DbContext";
+import { ProcessedDataBucket } from "./ProcessedDataBucket.jsx"
+
+export const ProcessedDataBucketContext = React.createContext();
+export function useProcessedDataBucket() {
+ return useContext(ProcessedDataBucketContext);
+}
+
+export function ProcessedDataBucketProvider({ children }) {
+ //create the processed data bucket object
+ const [processedDataBucket, setProcessedDataBucket] = useState(new ProcessedDataBucket());
+ return (
+
+ {children}
+
+ );
+};
\ No newline at end of file