CephasAldrich commited on
Commit
91f79fb
·
verified ·
1 Parent(s): 7510962

Update main.js

Browse files
Files changed (1) hide show
  1. main.js +2 -76
main.js CHANGED
@@ -29,7 +29,7 @@ function renderTweets() {
29
  feed.innerHTML = tweets.map(tweet => `
30
  <div class="tweet">
31
  <div class="tweet-header">
32
- <strong>Disaster Alert</strong>
33
  <span class="sentiment-badge ${getSentimentClass(tweet.sentiment)}">
34
  ${tweet.sentiment.toUpperCase()}
35
  </span>
@@ -66,81 +66,7 @@ function fetchTweets() {
66
  .catch(error => console.error('Error:', error));
67
  }
68
 
69
- // Fetch tweets every 5 minutes (300000 ms) instead of every 30 seconds
70
- setInterval(fetchTweets, 300000);
71
-
72
- // Initial fetch
73
- fetchTweets();
74
-
75
- let tweets = [];
76
-
77
- function updateStats() {
78
- document.getElementById('active-disasters').textContent =
79
- tweets.filter(t => t.isDisaster).length;
80
- document.getElementById('urgent-cases').textContent =
81
- tweets.filter(t => t.sentiment === 'Urgent').length;
82
- document.getElementById('total-tweets').textContent = tweets.length;
83
- }
84
-
85
- function getSentimentClass(sentiment) {
86
- switch(sentiment) {
87
- case 'Urgent': return 'sentiment-urgent';
88
- case 'Neutral': return 'sentiment-neutral';
89
- case 'Not Urgent': return 'sentiment-not-urgent';
90
- default: return '';
91
- }
92
- }
93
-
94
- function formatTimestamp(timestamp) {
95
- return new Date(timestamp).toLocaleTimeString();
96
- }
97
-
98
- function renderTweets() {
99
- const feed = document.getElementById('tweet-feed');
100
- if (tweets.length === 0) {
101
- feed.innerHTML = '<p>No new tweets available. This may be due to rate limiting or no recent disaster-related tweets.</p>';
102
- } else {
103
- feed.innerHTML = tweets.map(tweet => `
104
- <div class="tweet">
105
- <div class="tweet-header">
106
- <strong>Disaster Alert</strong>
107
- <span class="sentiment-badge ${getSentimentClass(tweet.sentiment)}">
108
- ${tweet.sentiment.toUpperCase()}
109
- </span>
110
- </div>
111
- <div class="tweet-content">
112
- ${tweet.text}
113
- </div>
114
- <div class="tweet-footer">
115
- <div class="location">
116
- 📍 ${tweet.location}
117
- </div>
118
- <div style="margin-left: auto">
119
- ${formatTimestamp(tweet.timestamp)}
120
- </div>
121
- </div>
122
- </div>
123
- `).join('');
124
- }
125
- }
126
-
127
- function fetchTweets() {
128
- fetch('/api/predict')
129
- .then(response => response.json())
130
- .then(data => {
131
- if (data.error) {
132
- console.error('Error:', data.error);
133
- return;
134
- }
135
- const newTweets = JSON.parse(data.data);
136
- tweets = [...newTweets, ...tweets].slice(0, 100); // Keep only the latest 100 tweets
137
- updateStats();
138
- renderTweets();
139
- })
140
- .catch(error => console.error('Error:', error));
141
- }
142
-
143
- // Fetch tweets every 5 minutes (300000 ms) instead of every 30 seconds
144
  setInterval(fetchTweets, 300000);
145
 
146
  // Initial fetch
 
29
  feed.innerHTML = tweets.map(tweet => `
30
  <div class="tweet">
31
  <div class="tweet-header">
32
+ <strong>${tweet.isDisaster ? 'Disaster Alert' : 'Tweet'}</strong>
33
  <span class="sentiment-badge ${getSentimentClass(tweet.sentiment)}">
34
  ${tweet.sentiment.toUpperCase()}
35
  </span>
 
66
  .catch(error => console.error('Error:', error));
67
  }
68
 
69
+ // Fetch tweets every 5 minutes (300000 ms)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  setInterval(fetchTweets, 300000);
71
 
72
  // Initial fetch