aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Foiani <sotech117@michaels-mbp-3.lan>2021-04-12 12:35:04 -0400
committerMichael Foiani <sotech117@michaels-mbp-3.lan>2021-04-12 12:35:04 -0400
commit77bbe0152f3298feff837136b12c7049c39f49c6 (patch)
tree4f93d2c4899a88c9bf3a830c856858b50dfae476
parent6384bebb363ab75e9f1d567ed179e08057828171 (diff)
Quickly brewed some basic frontend to display results from trades.
-rw-r--r--data/trades.sqlite3bin36864 -> 36864 bytes
-rw-r--r--frontend/public/round_expand_less_white_18dp.pngbin0 -> 170 bytes
-rw-r--r--frontend/public/round_expand_more_white_18dp.pngbin0 -> 166 bytes
-rw-r--r--frontend/src/Hub.js26
-rw-r--r--frontend/src/HubList.js43
-rw-r--r--frontend/src/SECAPIData.js8
-rw-r--r--src/main/java/edu/brown/cs/student/term/Main.java24
-rw-r--r--src/main/java/edu/brown/cs/student/term/hub/Holder.java5
8 files changed, 94 insertions, 12 deletions
diff --git a/data/trades.sqlite3 b/data/trades.sqlite3
index 1fbf57a..db88fc6 100644
--- a/data/trades.sqlite3
+++ b/data/trades.sqlite3
Binary files differ
diff --git a/frontend/public/round_expand_less_white_18dp.png b/frontend/public/round_expand_less_white_18dp.png
new file mode 100644
index 0000000..a64f430
--- /dev/null
+++ b/frontend/public/round_expand_less_white_18dp.png
Binary files differ
diff --git a/frontend/public/round_expand_more_white_18dp.png b/frontend/public/round_expand_more_white_18dp.png
new file mode 100644
index 0000000..f8c7213
--- /dev/null
+++ b/frontend/public/round_expand_more_white_18dp.png
Binary files differ
diff --git a/frontend/src/Hub.js b/frontend/src/Hub.js
new file mode 100644
index 0000000..982ffee
--- /dev/null
+++ b/frontend/src/Hub.js
@@ -0,0 +1,26 @@
+// React import
+import { useState } from "react";
+
+/**
+ * Componenet for checkins. Has a toggle to show more info.
+ * @param {Object} props The props of the component.
+ * @returns {import('react').HtmlHTMLAttributes} A list element holding a checkin's info.
+ */
+function Hub(props) {
+ // State - toggled
+ const [isToggled, setIsToggled] = useState(false);
+
+ return (
+ <li className='Checkin'>
+ <div className="Img-flex">
+ <span><span className="Clickable-name" onClick= {(e) => console.log(props.name)}>{props.name}</span> has {props.value}</span>
+ <img className="Img-btn" hidden={isToggled} onClick={() => setIsToggled((toggle) => !toggle)} src="/round_expand_more_white_18dp.png" alt="image"/>
+ <img className="Img-btn" hidden={!isToggled} onClick={() => setIsToggled((toggle) => !toggle)} src="/round_expand_less_white_18dp.png" alt="image"/>
+ </div>
+ <div hidden={!isToggled}>
+ Testing field...
+ </div>
+ </li>);
+}
+
+export default Hub; \ No newline at end of file
diff --git a/frontend/src/HubList.js b/frontend/src/HubList.js
new file mode 100644
index 0000000..9947d5e
--- /dev/null
+++ b/frontend/src/HubList.js
@@ -0,0 +1,43 @@
+// React and component imports
+import { useEffect, useState } from "react";
+import Hub from './Hub';
+
+/**
+ * Component that build the checkin list and displays checkin info.
+ * @returns {import('react').HtmlHTMLAttributes} A div with the checkins
+ * in a vertical layout.
+ */
+function HubList(props) {
+ const [hubItems, setHubItems] = useState([]);
+
+ /**
+ * Loads new the checkins into the current cache/map of checkins.
+ */
+ const updateHubItems = () => {
+ let tempCheckinItems = [];
+ const sorted = Object.entries(props.data).sort(([,a],[,b]) => b-a);
+ console.log(sorted);
+ for (const [key, value] of sorted) {
+ tempCheckinItems.push(
+ <Hub name={key} value={value}></Hub>
+ );
+ }
+ setHubItems(tempCheckinItems);
+ }
+
+ // React hook that queries the checkin database every 5 seconds.
+ useEffect(() => {
+ updateHubItems();
+ }, [props.data]);
+
+ return (
+ <div className="User-checkin">
+ <div className="Checkins">
+ <h2>Hubs and Suspicion</h2>
+ <ul className='Checkin-list'>{hubItems}</ul>
+ </div>
+ </div>
+ );
+}
+
+export default HubList; \ No newline at end of file
diff --git a/frontend/src/SECAPIData.js b/frontend/src/SECAPIData.js
index b1b4939..a209ff2 100644
--- a/frontend/src/SECAPIData.js
+++ b/frontend/src/SECAPIData.js
@@ -1,5 +1,6 @@
import React, {useState, useEffect} from 'react';
import Button from './Button';
+import HubList from './HubList'
@@ -70,10 +71,7 @@ function SECAPIData() {
credentials: "same-origin"
})
- .then(response => {
- setDisplayData(JSON.stringify(response));
- console.log(response);
- })
+ .then(response => response.json().then(data => setDisplayData(data)))
.catch(function (error) {
console.log(error);
});
@@ -86,7 +84,7 @@ function SECAPIData() {
<div>
<h1>SECAPIData</h1>
<Button onPress={requestData}></Button>
- <p>DISPLAY DATA: {displayData}</p>
+ <HubList data={displayData}></HubList>
</div>
);
}
diff --git a/src/main/java/edu/brown/cs/student/term/Main.java b/src/main/java/edu/brown/cs/student/term/Main.java
index 2a75bd5..7b9c9fc 100644
--- a/src/main/java/edu/brown/cs/student/term/Main.java
+++ b/src/main/java/edu/brown/cs/student/term/Main.java
@@ -1,5 +1,8 @@
package edu.brown.cs.student.term;
+import edu.brown.cs.student.term.hub.Holder;
+import edu.brown.cs.student.term.hub.HubSearch;
+import edu.brown.cs.student.term.hub.LinkMapper;
import edu.brown.cs.student.term.repl.Command;
import edu.brown.cs.student.term.repl.REPL;
import edu.brown.cs.student.term.repl.commands.LoadCommand;
@@ -12,6 +15,7 @@ import java.sql.Date;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
+import java.time.Instant;
import java.util.HashMap;
import java.io.*;
@@ -74,7 +78,8 @@ public final class Main {
// TODO: fix temproary solution
public static JSONObject xmlLinks = null;
-
+
+ private static final Gson GSON = new Gson();
private static final int DEFAULT_PORT = 4567;
/**
@@ -162,8 +167,21 @@ public final class Main {
String str = request.body();
xmlLinks = new JSONObject(str); //this is all the filedAt times and xml files
-
- return "replace";
+ try{
+ DatabaseQuerier db = new DatabaseQuerier("data/trades.sqlite3");
+ LinkMapper lm = new LinkMapper(db);
+
+ Instant start = Instant.parse("2021-03-30T05:00:00.00Z");
+ //12 am on 3/28 in UTC
+ Instant end = Instant.parse("2021-04-12T05:00:00.00Z");
+ lm.makeFollowerLinks(start, end);
+ HubSearch hub = new HubSearch(lm);
+ Map<Holder, Double> him = hub.runHubSearch(start, end);
+ return GSON.toJson(him);
+ } catch(Exception e){
+ System.out.println("DBQuerier Test, couldn't connect to db???");
+ return "Error";
+ }
}
}
diff --git a/src/main/java/edu/brown/cs/student/term/hub/Holder.java b/src/main/java/edu/brown/cs/student/term/hub/Holder.java
index 21c0aea..abe59df 100644
--- a/src/main/java/edu/brown/cs/student/term/hub/Holder.java
+++ b/src/main/java/edu/brown/cs/student/term/hub/Holder.java
@@ -21,10 +21,7 @@ public class Holder {
@Override
public String toString() {
- return "Holder{" +
- "id=" + id +
- ", name='" + name + '\'' +
- '}';
+ return name;
}
@Override