Browse Source

Bug fixes and adapt new Gun DB structure

Carsten Porth 5 years ago
parent
commit
25f09a1f0d
1 changed files with 41 additions and 19 deletions
  1. 41 19
      dashboard/app.js

+ 41 - 19
dashboard/app.js

@@ -1,5 +1,5 @@
 const gun = Gun("https://hybrid-osn.herokuapp.com/gun");
-const gunId = "hybridOSN-beta003/hashtags";
+const gunId = "hybridOSN-beta009";
 
 const app = new Vue({
   el: "#app",
@@ -12,11 +12,11 @@ const app = new Vue({
     hashtags: []
   },
   computed: {
-    hashtagKeys() {
+    hashtagKey() {
       if (this.date in this.keysByDate) {
         return this.keysByDate[this.date];
       } else {
-        return [];
+        return null;
       }
     },
     hashtagRanking() {
@@ -33,31 +33,53 @@ const app = new Vue({
   },
   async mounted() {
     // load data and group by date
-    const data = await gun.get(gunId).then();
-    const keys = Object.keys(data).filter(val => /^[0-9]+$/.test(val));
-    this.keysByDate = _.groupBy(keys, timestamp =>
-      new Date(parseInt(timestamp)).toISOString().slice(0, 10)
-    );
-    this.loadHashtags();
+    const data = await gun
+      .get(gunId)
+      .get("hashtags")
+      .then();
+
+    if (data === undefined) {
+      console.error("Currently there is no data on Gun provided.");
+    } else {
+      const keys = Object.keys(data).filter(val => /^[0-9]+$/.test(val));
+      this.createDateKeyMap(keys);
+      this.loadHashtags();
+    }
   },
   methods: {
+    createDateKeyMap(keys) {
+      const tzoffset = new Date().getTimezoneOffset() * 60000;
+      this.keysByDate = keys.reduce((map, el) => {
+        map[new Date(parseInt(el) - tzoffset).toISOString().slice(0, 10)] = el;
+        return map;
+      }, {});
+    },
     async loadHashtags() {
-      // show loading
-      this.showLoading = true;
-
-      // (re)set vars
-      this.total = this.hashtagKeys.length;
       this.hashtags = [];
 
-      // fetch tweets
-      for (let i = 0; i < this.total; i++) {
-        this.done = i + 1;
+      // show loading
+      this.showLoading = true;
 
+      if (this.hashtagKey === null) {
+        console.info("No hashtags posted on this day");
+      } else {
         let data = await gun
           .get(gunId)
-          .get(this.hashtagKeys[i])
+          .get("hashtags")
+          .get(this.hashtagKey)
           .then();
-        this.hashtags.push(data["hashtags"]);
+
+        const keys = Object.keys(data).filter(val => /^[0-9]+$/.test(val));
+
+        // (re)set vars
+        this.total = keys.length;
+
+        // fetch hashtags
+        for (let i = 0; i < this.total; i++) {
+          this.done = i + 1;
+          const hashtagEntry = await gun.get(keys[i]).then();
+          this.hashtags.push(hashtagEntry["hashtags"]);
+        }
       }
 
       // finish loading