Skip to content

Commit 66eb430

Browse files
committed
Enable Filtering and Sorting
1 parent e7bd2d3 commit 66eb430

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

public/scripts/main.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,8 @@
202202

203203
// AJAX Helpers
204204

205+
let filter = false;
206+
205207
function deleteMessage(id) {
206208
return fetch(`/messages/${id}`, {
207209
method: 'DELETE'
@@ -230,9 +232,12 @@ function updateMessage(message, id) {
230232

231233
function renderMessages(messages = []) {
232234
return messages
235+
.filter(message => !filter || message.flagged)
236+
// sort by id, desc. to sort asc, m1.id - m2.id
237+
.sort((m1, m2) => m2.id - m1.id)
233238
.map(
234239
message => `
235-
<li>
240+
<li class="${message.flagged ? "flagged" : ""}">
236241
<p>
237242
<strong>${message.id}</strong>
238243
${message.username} -
@@ -259,6 +264,7 @@ function refreshMessages(node) {
259264
document.addEventListener('DOMContentLoaded', () => {
260265
const messagesUl = document.querySelector('#messages');
261266
const newMessageForm = document.querySelector('#new-message');
267+
const filterButton = document.querySelector('#filter-messages');
262268

263269
// Every second, re-render the messages inside
264270
// of the ul#message node
@@ -274,6 +280,13 @@ document.addEventListener('DOMContentLoaded', () => {
274280
}).then(() => refreshMessages(messagesUl));
275281
});
276282

283+
filterButton.addEventListener('click', event => {
284+
event.preventDefault();
285+
filter = !filter;
286+
filterButton.innerHTML = `View ${filter ? "All" : "Flagged"} Messages`;
287+
refreshMessages(messagesUl)
288+
})
289+
277290
// The `.delete-button`s are not on the page initially
278291
// or event after the dom content is loaded. Once they
279292
// appear, they're constantly replaced every second.

public/stylesheets/main.css

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,6 @@ input[type='submit'] {
6767
color: #fff;
6868
}
6969

70-
.flag-button blue {
71-
background: blue;
72-
}
73-
74-
.flag-button green {
75-
background: green;
70+
.flagged {
71+
border: 1px solid red;
7672
}

views/home/index.ejs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<textarea name="body" placeholder="Type your message..."></textarea>
88
<input type="submit" value='Post Message' />
99
</form>
10+
<button id="filter-messages" type="button" name="button">View Flagged Messages</button>
1011

1112
<ul id="messages"></ul>
1213

0 commit comments

Comments
 (0)