Filter not done

This commit is contained in:
2022-11-03 11:34:13 +01:00
parent 07030ab3d3
commit a4031cbb54
4 changed files with 41 additions and 61 deletions

View File

@@ -62,7 +62,7 @@
<div class="maintable"> <div class="maintable">
<div class="leftcol column"> <div class="leftcol column">
<span class="colheader">Latest Cluccs</span> <span class="colheader">Latest Cluccs</span>
<div class="tweetcontainer" id="tweet"> <div class="tweetcontainer latest" id="latest">
<div class="tweet"> <div class="tweet">
<img src="https://pbs.twimg.com/profile_images/1158803404656959490/9MKSbW4O_400x400.jpg" alt="" class="tweet-profilepicture"> <img src="https://pbs.twimg.com/profile_images/1158803404656959490/9MKSbW4O_400x400.jpg" alt="" class="tweet-profilepicture">
<div class="tweet-content"> <div class="tweet-content">
@@ -91,6 +91,9 @@
</div> </div>
<div class="centercol column"> <div class="centercol column">
<span class="colheader">Filtered Cluccs</span> <span class="colheader">Filtered Cluccs</span>
<div class="filtered" id="filtered">
</div>
</div> </div>
<div class="rightcol column"> <div class="rightcol column">
<div class="searchcontainer column"> <div class="searchcontainer column">
@@ -127,12 +130,12 @@
<script src="./js/code.js"></script> <script src="./js/code.js"></script>
<script src="./js/events.js"></script> <script src="./js/events.js"></script>
<script> <script>
block("#tweet").tweets({ block("#latest").tweets({
memory: 20 memory: 20
}); });
block('#balk').barchart(); block('#balk').barchart();
events.connect('balk', '#balk'); events.connect('balk', '#balk');
events.connect("tweet", "#tweet"); events.connect("tweet", "#latest");
// // create a rolling chart block // // create a rolling chart block
// block('#graph').rolling_chart({ // block('#graph').rolling_chart({

View File

@@ -1,12 +1,11 @@
let selectedSports = [] let selectedSports = []
let filters = { let filters = {
selectedSports: selectedSports,
searchedWords: [], searchedWords: [],
blockedWords: [], blockedWords: [],
popularityFilter: {},
sorted: "time", sorted: "time",
order: "desc" order: "desc",
sports: []
} }
function showFeeds() { function showFeeds() {
@@ -28,7 +27,7 @@ function tweetCell(tweet) {
var cell = document.createElement("div"); var cell = document.createElement("div");
cell.innerHTML = cell.innerHTML =
`<div class="tweet"> `<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> <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-content">
<div class="tweet-name"> <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-nickname" href = "https://www.twitter.com/${tweet.user.screen_name}" target = "_blank">${tweet.user.name}</a>
@@ -54,22 +53,14 @@ function tweetCell(tweet) {
return cell return cell
} }
function filterTweets(tweets, bannedWords=[], searchWords=[], likesTop=null, likesBottom=null, retweetsTop=null, retweetsBottom=null, repliesTop=null, repliesBottom=null) { function filterTweets(tweets, bannedWords=[], searchWords=[], sorted, order) {
console.log(searchWords)
if(bannedWords.length > 0){ if(bannedWords.length > 0){
tweets = filterBannedWords(bannedWords, tweets) tweets = filterBannedWords(bannedWords, tweets)
} }
if(searchWords.length > 0){ if(searchWords.length > 0){
tweets = searchForWords(searchWords, tweets) 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 return tweets
} }
@@ -87,49 +78,20 @@ function filterBannedWords(bannedWords, tweets){
} }
function searchForWords(searchWords, tweets){ function searchForWords(searchWords, tweets){
var filteredTweets = []
for (let i = 0; i < tweets.length; i++) { for (let i = 0; i < tweets.length; i++) {
var tweet = tweets[i] var tweet = tweets[i]
for(let i=0; i < searchWords.length; i++){ for(let i=0; i < searchWords.length; i++){
console.log(tweet.text.toLowerCase().includes(searchWords[i].toLowerCase()))
if (!tweet.text.toLowerCase().includes(searchWords[i].toLowerCase())) { if (!tweet.text.toLowerCase().includes(searchWords[i].toLowerCase())) {
tweets.splice(i, 1) tweets.splice(i, 1)
break break
} }
} }
console.log(tweet, searchWords)
filteredTweets.push(tweet)
} }
return tweets return filteredTweets.reverse()
}
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, retweetsDes=null, repliesDes=null, dateDes=null){ function sortTweets(tweets, likesDes=null, retweetsDes=null, repliesDes=null, dateDes=null){
@@ -154,4 +116,4 @@ function sortTweets(tweets, likesDes=null, retweetsDes=null, repliesDes=null, da
tweets.sort(function(a,b){return Date(a.created_at)-Date(b.reply_count)}) tweets.sort(function(a,b){return Date(a.created_at)-Date(b.reply_count)})
} }
return tweets return tweets
} }

View File

@@ -2,6 +2,8 @@
// Sports = all selected sports, ARRAY // Sports = all selected sports, ARRAY
$(".sport").on("selected", function(e, selected, sports) { $(".sport").on("selected", function(e, selected, sports) {
console.log(selected, sports); console.log(selected, sports);
filters.sports = sports;
$(window).trigger("filter");
}) })
window.addEventListener('DOMContentLoaded', (event) => { window.addEventListener('DOMContentLoaded', (event) => {
@@ -40,12 +42,6 @@ $(".sortby").on("click", function() {
$(".sort-dropdown-list li").on("click", function() { $(".sort-dropdown-list li").on("click", function() {
$(".sort-dropdown").toggle() $(".sort-dropdown").toggle()
filters.sorted = $(this).val()
$(window).trigger("test", filters)
})
$(window).on("test", function(e, filter) {
console.log(filter);
}) })
let root = document.querySelector(":root") let root = document.querySelector(":root")
@@ -56,4 +52,19 @@ $(".logo").on("click", function() {
} else { } else {
root.style.setProperty('--main-bg', 'ghostwhite'); root.style.setProperty('--main-bg', 'ghostwhite');
} }
}) })
$(window).on("filter", function() {
var parent = $("div.filtered")
$("div.filtered").innerHTML = ""
console.debug(filters);
tweets = window.sessionStorage.getItem('tweets');
tweets = JSON.parse(tweets);
tweets = filterTweets(tweets, filters.blockedWords, filters.searchedWords.concat(filters.sports), filters.sorted, filters.order);
tweets = sortTweets(tweets);
for (i = 0; i < Math.min(tweets.length, 20); i++){
parent.append(tweetCell(tweets[i]));
}
})

View File

@@ -73,6 +73,7 @@ block.fn.tweets = function(config) {
// store list for later // store list for later
var $list = $("div.tweetcontainer"); var $list = $("div.tweetcontainer");
console.log(this.$element.find("div"))
// register default handler for handling tweet data // register default handler for handling tweet data
this.actions(function(e, tweet){ this.actions(function(e, tweet){
@@ -85,8 +86,11 @@ block.fn.tweets = function(config) {
} }
window.sessionStorage.setItem('tweets', JSON.stringify(tweets)); window.sessionStorage.setItem('tweets', JSON.stringify(tweets));
var $item = tweetCell(tweet) // tweets = filterTweets(tweets, filters.blockedWords, filters.searchedWords + filters.sports, filters.sorted, filters.order);
$list.prepend($item); // tweets = sortTweets(tweets);
for (i = 0; i < tweets.length; i++){
$list.prepend(tweetCell(tweets[i]));
}
// remove stale tweets // remove stale tweets
if ($list.children().length > options.memory) { if ($list.children().length > options.memory) {