|
@@ -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
|