175 lines
5.8 KiB
JavaScript
175 lines
5.8 KiB
JavaScript
let root = document.documentElement // Used for css variables
|
|
|
|
let selectedSports = []
|
|
|
|
$(".sport").on("click", function() {
|
|
$(this).toggleClass("selected")
|
|
|
|
let sportName = $(this).children()[1].innerHTML // 2nd element, which is the sport name
|
|
|
|
|
|
let index = selectedSports.indexOf(sportName)
|
|
if (index > -1 ) { // If element is found in array
|
|
selectedSports.splice(index, 1) // Remove sport at index
|
|
} else {
|
|
selectedSports.push(sportName) // Add sport to array
|
|
}
|
|
|
|
$(this).trigger("selected", [selectedSports.includes(sportName), selectedSports]) // Trigger event
|
|
showFeeds()
|
|
})
|
|
|
|
function getCSSVariable(name) {
|
|
return getComputedStyle(root).getPropertyValue(name)
|
|
}
|
|
|
|
function showFeeds() {
|
|
if ($(window).width() < 1280) {
|
|
if (selectedSports.length === 0) {
|
|
$(".leftcol").show()
|
|
$(".centercol").hide()
|
|
} else {
|
|
$(".leftcol").hide()
|
|
$(".centercol").show()
|
|
}
|
|
} else {
|
|
$(".leftcol").show()
|
|
$(".centercol").show()
|
|
}
|
|
}
|
|
|
|
$(window).on("resize", function(){
|
|
showFeeds()
|
|
});
|
|
|
|
$(window).on("load", function() {
|
|
showFeeds()
|
|
})
|
|
|
|
function tweetCell(tweet) {
|
|
var cell = document.createElement("div");
|
|
cell.innerHTML =
|
|
`<div class="tweet">
|
|
<a href ="https://www.twitter.com/${tweet.user.screen_name}"><img src="${tweet.user.profile_image_url}" onerror="this.src='media/logo.png'" class="tweet-profilepicture"></a>
|
|
<div class="tweet-content">
|
|
<div class="tweet-name">
|
|
<a class="tweet-nickname" href = "https://www.twitter.com/${tweet.user.screen_name}" target = "_blank">${tweet.user.name}</a>
|
|
<a class="tweet-username" href = "https://www.twitter.com/${tweet.user.screen_name}" target = "_blank">@${tweet.user.screen_name}</a>
|
|
</div>
|
|
<span class="tweet-text">${tweet.text}</span>
|
|
<div class="tweet-interactions">
|
|
<div class="tweet-interaction tweet-likes">
|
|
<span class="material-symbols-outlined">favorite</span>
|
|
<span>${tweet.favorite_count}</span>
|
|
</div>
|
|
<div class="tweet-interaction tweet-retweets">
|
|
<span class="material-symbols-outlined">repeat</span>
|
|
<span>${tweet.retweet_count}</span>
|
|
</div>
|
|
<div class="tweet-interaction tweet-replies">
|
|
<span class="material-symbols-outlined">chat_bubble</span>
|
|
<span>${tweet.reply_count}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>`
|
|
return cell
|
|
}
|
|
|
|
function filterTweets(tweets, bannedWords=[], searchWords=[], likesTop=null, likesBottom=null, retweetsTop=null, retweetsBottom=null, repliesTop=null, repliesBottom=null) {
|
|
if(bannedWords.length > 0){
|
|
tweets = filterBannedWords(bannedWords, tweets)
|
|
}
|
|
if(searchWords.length > 0){
|
|
tweets = searchForWords(searchWords, tweets)
|
|
}
|
|
if(likesTop != null || likesBottom != null){
|
|
tweets = filterLikes(likesTop, likesBottom, tweets)
|
|
}
|
|
if(retweetsTop != null || retweetsBottom != null){
|
|
tweets = filterRetweets(retweetsTop, retweetsBottom, tweets)
|
|
}
|
|
if(repliesTop != null || repliesBottom != null){
|
|
tweets = filterReplies(repliesTop, repliesBottom, tweets)
|
|
}
|
|
return tweets
|
|
}
|
|
|
|
function filterBannedWords(bannedWords, tweets){
|
|
for (let i = 0; i < tweets.length; i++) {
|
|
var tweet = tweets[i]
|
|
for(let j=0; j < bannedWords.length; j++){
|
|
if (tweet.text.toLowerCase().includes(bannedWords[j].toLowerCase())){
|
|
tweets.splice(i, 1)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return tweets
|
|
}
|
|
|
|
function searchForWords(searchWords, tweets){
|
|
for (let i = 0; i < tweets.length; i++) {
|
|
var tweet = tweets[i]
|
|
for(let i=0; i < searchWords.length; i++){
|
|
if (!tweet.text.toLowerCase().includes(searchWords[i].toLowerCase())) {
|
|
tweets.splice(i, 1)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return tweets
|
|
}
|
|
|
|
function filterLikes(likesTop, likesBottom, tweets){
|
|
for (let i = 0; i < tweets.length; i++) {
|
|
var tweet = tweets[i]
|
|
if(tweet.favorite_count >= likesTop || tweet.favorite_count <= likesBottom){
|
|
tweets.splice(i, 1)
|
|
break
|
|
}
|
|
}
|
|
return tweets
|
|
}
|
|
|
|
function filterRetweets(retweetsTop, retweetsBottom, tweets){
|
|
for (let i = 0; i < tweets.length; i++) {
|
|
var tweet = tweets[i]
|
|
if(tweet.retweet_count >= retweetsTop || tweet.retweet_count <= retweetsBottom){
|
|
tweets.splice(i, 1)
|
|
break
|
|
}
|
|
}
|
|
return tweets
|
|
}
|
|
|
|
function filterReplies(repliesTop, repliesBottom, tweets){
|
|
for (let i = 0; i < tweets.length; i++) {
|
|
var tweet = tweets[i]
|
|
if(tweet.reply_count >= repliesTop || tweet.reply_count <= repliesBottom){
|
|
tweets.splice(i, 1)
|
|
break
|
|
}
|
|
}
|
|
return tweets
|
|
}
|
|
|
|
function sortTweets(tweets, likesDes=null, retweets=null, replies=null){
|
|
if(likesDes && likesDes!=null){
|
|
tweets.sort(function(a,b){return b.favorite_count-a.favorite_count})
|
|
} else if (!likesDes && likesDes!=null){
|
|
tweets.sort(function(a,b){return a.favorite_count-b.favorite_count})
|
|
}
|
|
if(retweets && retweets!=null){
|
|
tweets.sort(function(a,b){return b.retweet_count-a.retweet_count})
|
|
} else if (!retweets && retweets!=null){
|
|
tweets.sort(function(a,b){return a.retweet_count-b.retweet_count})
|
|
}
|
|
if(replies && replies!=null){
|
|
tweets.sort(function(a,b){return b.reply_count-a.reply_count})
|
|
} else if (!replies && replies!=null){
|
|
tweets.sort(function(a,b){return a.reply_count-b.reply_count})
|
|
}
|
|
return tweets
|
|
}
|