css filters and event

This commit is contained in:
Tim Wijma
2022-11-02 14:39:12 +01:00
8 changed files with 132 additions and 59 deletions

View File

Binary file not shown.

View File

@@ -90,13 +90,13 @@
</div> </div>
</div> </div>
<div class="centercol column"> <div class="centercol column">
<span class="colheader">Filtered Cluccs</span> <h1 class="colheader">FILTERED CLUCCS</h1>
</div> </div>
<div class="rightcol column"> <div class="rightcol column">
<div class="searchcontainer column"> <div class="searchcontainer column">
<input class="searchbar" type="text" placeholder="SEARCH CLUCCS..."> <input class="searchbar" type="text" placeholder="SEARCH CLUCCS...">
<div class="button"> <div class="button sort-btn">
<span>SORT BY <span class="material-symbols-outlined">arrow_drop_down</span></span> <span class="sortby">SORT BY <span class="material-symbols-outlined">arrow_drop_down</span></span>
<div class="sort-dropdown"> <div class="sort-dropdown">
<ul class="sort-dropdown-list"> <ul class="sort-dropdown-list">
<li>Time</li> <li>Time</li>
@@ -114,6 +114,19 @@
</div> </div>
</div> </div>
</div> </div>
-->
<div class = "maintable">
<div class = "leftcol">
<h1 class = 'colheader'>LATEST CLUCCS</h1>
</div>
<div class="centercol">
<h1 class = 'colheader'>FILTERED CLUCCS</h1>
</div>
<div class = "searchbar"></div>
<div class = "popchart">
<h1 class = 'colheader'>SPORTS POPULARITY CHART</h1>
</div>
</div>
</div> </div>
</div> </div>
<script src="/lib/jquery-2.1.1.min.js"></script> <script src="/lib/jquery-2.1.1.min.js"></script>
@@ -123,7 +136,7 @@
<script src="/lib/log.js"></script> <script src="/lib/log.js"></script>
<script src="./lib/tweets.js"></script> <script src="./lib/tweets.js"></script>
<script src="./js/code.js"></script> <script src="./js/code.js"></script>
<script src="./js/connection.js"></script> <script src="./js/events.js"></script>
<script> <script>
block("#tweet").tweets({ block("#tweet").tweets({
memory: 20 memory: 20

View File

@@ -1,28 +1,3 @@
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() { function showFeeds() {
if ($(window).width() < 1280) { if ($(window).width() < 1280) {
if (selectedSports.length === 0) { if (selectedSports.length === 0) {
@@ -38,23 +13,15 @@ function showFeeds() {
} }
} }
$(window).on("resize", function(){
showFeeds()
});
$(window).on("load", function() {
showFeeds()
})
function tweetCell(tweet) { function tweetCell(tweet) {
var cell = document.createElement("div"); var cell = document.createElement("div");
cell.innerHTML = cell.innerHTML =
`<div class="tweet"> `<div class="tweet">
<img src="${tweet.user.profile_image_url}" alt="" class="tweet-profilepicture"> <a href ="https://www.twitter.com/${tweet.user.screen_name}"><img src="${tweet.user.profile_image_url}" alt="" class="tweet-profilepicture"></a>
<div class="tweet-content"> <div class="tweet-content">
<div class="tweet-name"> <div class="tweet-name">
<span class="tweet-nickname">${tweet.user.name}</span> <a class="tweet-nickname" href = "https://www.twitter.com/${tweet.user.screen_name}" target = "_blank">${tweet.user.name}</a>
<span class="tweet-username">@${tweet.user.screen_name}</span> <a class="tweet-username" href = "https://www.twitter.com/${tweet.user.screen_name}" target = "_blank">@${tweet.user.screen_name}</a>
</div> </div>
<span class="tweet-text">${tweet.text}</span> <span class="tweet-text">${tweet.text}</span>
<div class="tweet-interactions"> <div class="tweet-interactions">
@@ -76,7 +43,7 @@ function tweetCell(tweet) {
return cell return cell
} }
function filter(tweets, bannedWords=[], searchWords=[], likesTop=null, likesBottom=null, retweetsTop=null, retweetsBottom=null, repliesTop=null, repliesBottom=null) { function filterTweets(tweets, bannedWords=[], searchWords=[], likesTop=null, likesBottom=null, retweetsTop=null, retweetsBottom=null, repliesTop=null, repliesBottom=null) {
if(bannedWords.length > 0){ if(bannedWords.length > 0){
tweets = filterBannedWords(bannedWords, tweets) tweets = filterBannedWords(bannedWords, tweets)
} }
@@ -153,3 +120,24 @@ function filterReplies(repliesTop, repliesBottom, tweets){
} }
return tweets 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
}
var tweets = [{"likes": 2},{"likes": 3},{"likes": 5},{"likes": 1}]

View File

@@ -1,8 +0,0 @@
// Selected = is clicked sport selected or not, BOOL
// Sports = all selected sports, ARRAY
$(".sport").on("selected", function(e, selected, sports) {
console.log(selected, sports);
})
window.addEventListener('DOMContentLoaded', (event) => {
window.sessionStorage.setItem('tweets', JSON.stringify([]));
});

View File

@@ -0,0 +1,47 @@
// Selected = is clicked sport selected or not, BOOL
// Sports = all selected sports, ARRAY
$(".sport").on("selected", function(e, selected, sports) {
console.log(selected, sports);
})
window.addEventListener('DOMContentLoaded', (event) => {
window.sessionStorage.setItem('tweets', JSON.stringify([]));
});
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()
})
$(window).on("resize", function(){
showFeeds()
});
$(window).on("load", function() {
showFeeds()
})
$(".sortby").on("click", function() {
$(".sort-dropdown").toggle()
// $(".sort-btn").toggleClass("radius-bottom")
})
$(".sort-dropdown-list li").on("click", function() {
$(".sort-dropdown").toggle()
})

View File

@@ -122,10 +122,20 @@ body {
} }
.tweet-nickname { .tweet-nickname {
color: white;
text-decoration: none;
font-weight: bold;
}
.tweet-nickname:active {
color: white;
text-decoration: underline;
font-weight: bold; font-weight: bold;
} }
.tweet-username { .tweet-username {
color: white;
text-decoration: none;
opacity: 0.8; opacity: 0.8;
} }
@@ -215,7 +225,7 @@ body {
font-weight: bold; font-weight: bold;
font-size: 24px; font-size: 24px;
border-radius: 50px; border-radius: 50px;
padding: 10px; padding: 8px;
margin: 4px 8px; margin: 4px 8px;
border: none; border: none;
} }
@@ -224,18 +234,41 @@ body {
color: black; color: black;
cursor: pointer; cursor: pointer;
background-color: white; background-color: white;
border-radius: 50px; border-radius: 30px;
border: none; border: none;
} }
/* .button:hover { .sort-btn {
background-color: ; user-select: none;
} */ position: relative;
.sort-dropdown {
} }
.sort-drop-list { .sort-dropdown {
display: none;
}
.sort-dropdown-list {
position: absolute;
width: 100%;
list-style-type: none;
padding: 0;
margin: 0;
margin-left: -8px;
background-color: white;
border-radius: 0 0 16px 16px;
}
.sort-dropdown-list li {
font-weight: 500;
font-size: 22px;
padding: 0 8px;
}
.sort-dropdown-list li:hover {
background-color: #dddddd;
}
.radius-bottom {
border-bottom-left-radius: 16px;
border-bottom-right-radius: 16px;
} }

View File

Binary file not shown.

View File

Binary file not shown.