Sort teams by
From 78e4361452befdab73f2afbf744f185ff413f421 Mon Sep 17 00:00:00 2001
From: Corban-Lee <77944149+XordK@users.noreply.github.com>
Date: Tue, 9 May 2023 01:56:30 +0100
Subject: [PATCH 3/7] first load of teams now uses default filtesr
---
src/static/js/teams.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/static/js/teams.js b/src/static/js/teams.js
index 3492c97..6f75c2d 100644
--- a/src/static/js/teams.js
+++ b/src/static/js/teams.js
@@ -10,8 +10,6 @@ $(document).ready(() => {
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
teamsLoading(true); // show the loading icon
- fetchAndLoadTeams(); // load the teams
-
// Search functionality
var searchTimeout = null;
@@ -60,6 +58,9 @@ $(document).ready(() => {
return true;
}
});
+
+ fetchAndLoadTeams(...getFilters()); // load the teams with default filters
+
});
function getFilters() {
From 79d391d1712dd45c43e69c7fe92e4f4f35456248 Mon Sep 17 00:00:00 2001
From: Corban-Lee <77944149+XordK@users.noreply.github.com>
Date: Tue, 9 May 2023 09:42:21 +0100
Subject: [PATCH 4/7] JS cleanup [read comment]
Moved global js to new file custom.js and documented teams.js
---
src/mainapp/fixtures/members_fixture.json | 120 +++++++++++-----------
src/mainapp/fixtures/teams_fixture.json | 20 ++--
src/static/js/custom.js | 22 ++++
src/static/js/teams.js | 40 ++++----
src/templates/base.html | 1 +
5 files changed, 113 insertions(+), 90 deletions(-)
create mode 100644 src/static/js/custom.js
diff --git a/src/mainapp/fixtures/members_fixture.json b/src/mainapp/fixtures/members_fixture.json
index 4ae9387..cd00fae 100644
--- a/src/mainapp/fixtures/members_fixture.json
+++ b/src/mainapp/fixtures/members_fixture.json
@@ -3,8 +3,8 @@
"model": "mainapp.member",
"pk": 1,
"fields": {
- "first_name": "Shaquita",
- "last_name": "Nichols",
+ "first_name": "Robert",
+ "last_name": "Reid",
"team": 1,
"peg_number": null
}
@@ -13,8 +13,8 @@
"model": "mainapp.member",
"pk": 2,
"fields": {
- "first_name": "Tawanna",
- "last_name": "Kingsbury",
+ "first_name": "Ronald",
+ "last_name": "Jones",
"team": 1,
"peg_number": null
}
@@ -23,8 +23,8 @@
"model": "mainapp.member",
"pk": 3,
"fields": {
- "first_name": "Ricardo",
- "last_name": "Benton",
+ "first_name": "Casey",
+ "last_name": "Cohen",
"team": 1,
"peg_number": null
}
@@ -33,8 +33,8 @@
"model": "mainapp.member",
"pk": 4,
"fields": {
- "first_name": "David",
- "last_name": "Moore",
+ "first_name": "James",
+ "last_name": "Scudder",
"team": 2,
"peg_number": null
}
@@ -43,8 +43,8 @@
"model": "mainapp.member",
"pk": 5,
"fields": {
- "first_name": "Patricia",
- "last_name": "Mader",
+ "first_name": "Randall",
+ "last_name": "Young",
"team": 2,
"peg_number": null
}
@@ -53,8 +53,8 @@
"model": "mainapp.member",
"pk": 6,
"fields": {
- "first_name": "Sue",
- "last_name": "Coleman",
+ "first_name": "Helen",
+ "last_name": "Doak",
"team": 2,
"peg_number": null
}
@@ -63,8 +63,8 @@
"model": "mainapp.member",
"pk": 7,
"fields": {
- "first_name": "Brandon",
- "last_name": "Goodwin",
+ "first_name": "Brenda",
+ "last_name": "Powell",
"team": 3,
"peg_number": null
}
@@ -73,8 +73,8 @@
"model": "mainapp.member",
"pk": 8,
"fields": {
- "first_name": "Travis",
- "last_name": "Walls",
+ "first_name": "Constance",
+ "last_name": "Abild",
"team": 3,
"peg_number": null
}
@@ -83,8 +83,8 @@
"model": "mainapp.member",
"pk": 9,
"fields": {
- "first_name": "Donna",
- "last_name": "Sanders",
+ "first_name": "Patsy",
+ "last_name": "Branham",
"team": 3,
"peg_number": null
}
@@ -93,8 +93,8 @@
"model": "mainapp.member",
"pk": 10,
"fields": {
- "first_name": "Debra",
- "last_name": "Lu",
+ "first_name": "Cheryl",
+ "last_name": "Sears",
"team": 4,
"peg_number": null
}
@@ -103,8 +103,8 @@
"model": "mainapp.member",
"pk": 11,
"fields": {
- "first_name": "Edwin",
- "last_name": "Goldberger",
+ "first_name": "Justin",
+ "last_name": "Cramer",
"team": 4,
"peg_number": null
}
@@ -113,8 +113,8 @@
"model": "mainapp.member",
"pk": 12,
"fields": {
- "first_name": "Peggy",
- "last_name": "Lane",
+ "first_name": "Theodore",
+ "last_name": "Wilson",
"team": 4,
"peg_number": null
}
@@ -123,8 +123,8 @@
"model": "mainapp.member",
"pk": 13,
"fields": {
- "first_name": "Dora",
- "last_name": "Eye",
+ "first_name": "Geneva",
+ "last_name": "Low",
"team": 5,
"peg_number": null
}
@@ -133,8 +133,8 @@
"model": "mainapp.member",
"pk": 14,
"fields": {
- "first_name": "Christopher",
- "last_name": "Delap",
+ "first_name": "John",
+ "last_name": "Burtt",
"team": 5,
"peg_number": null
}
@@ -143,8 +143,8 @@
"model": "mainapp.member",
"pk": 15,
"fields": {
- "first_name": "John",
- "last_name": "Reyes",
+ "first_name": "Alfred",
+ "last_name": "Diaz",
"team": 5,
"peg_number": null
}
@@ -153,8 +153,8 @@
"model": "mainapp.member",
"pk": 16,
"fields": {
- "first_name": "Robert",
- "last_name": "Reveles",
+ "first_name": "Arthur",
+ "last_name": "Alton",
"team": 6,
"peg_number": null
}
@@ -163,8 +163,8 @@
"model": "mainapp.member",
"pk": 17,
"fields": {
- "first_name": "Cheryl",
- "last_name": "Jones",
+ "first_name": "Vicki",
+ "last_name": "Greer",
"team": 6,
"peg_number": null
}
@@ -173,8 +173,8 @@
"model": "mainapp.member",
"pk": 18,
"fields": {
- "first_name": "Anne",
- "last_name": "Thomas",
+ "first_name": "Lewis",
+ "last_name": "Segovia",
"team": 6,
"peg_number": null
}
@@ -183,8 +183,8 @@
"model": "mainapp.member",
"pk": 19,
"fields": {
- "first_name": "Erika",
- "last_name": "Dolfi",
+ "first_name": "Vince",
+ "last_name": "Robinson",
"team": 7,
"peg_number": null
}
@@ -193,8 +193,8 @@
"model": "mainapp.member",
"pk": 20,
"fields": {
- "first_name": "Scott",
- "last_name": "Hines",
+ "first_name": "Blake",
+ "last_name": "Mueller",
"team": 7,
"peg_number": null
}
@@ -203,8 +203,8 @@
"model": "mainapp.member",
"pk": 21,
"fields": {
- "first_name": "Min",
- "last_name": "Baker",
+ "first_name": "Luis",
+ "last_name": "Hazel",
"team": 7,
"peg_number": null
}
@@ -213,8 +213,8 @@
"model": "mainapp.member",
"pk": 22,
"fields": {
- "first_name": "Laura",
- "last_name": "Cleaves",
+ "first_name": "Diane",
+ "last_name": "Lloyd",
"team": 8,
"peg_number": null
}
@@ -223,8 +223,8 @@
"model": "mainapp.member",
"pk": 23,
"fields": {
- "first_name": "Deborah",
- "last_name": "Pence",
+ "first_name": "Jamey",
+ "last_name": "Mendes",
"team": 8,
"peg_number": null
}
@@ -233,8 +233,8 @@
"model": "mainapp.member",
"pk": 24,
"fields": {
- "first_name": "Harvey",
- "last_name": "Cabello",
+ "first_name": "Virgilio",
+ "last_name": "Nixon",
"team": 8,
"peg_number": null
}
@@ -243,8 +243,8 @@
"model": "mainapp.member",
"pk": 25,
"fields": {
- "first_name": "Shawn",
- "last_name": "Mabe",
+ "first_name": "Rodney",
+ "last_name": "White",
"team": 9,
"peg_number": null
}
@@ -253,8 +253,8 @@
"model": "mainapp.member",
"pk": 26,
"fields": {
- "first_name": "Donald",
- "last_name": "Duryea",
+ "first_name": "Kathleen",
+ "last_name": "Ashe",
"team": 9,
"peg_number": null
}
@@ -263,8 +263,8 @@
"model": "mainapp.member",
"pk": 27,
"fields": {
- "first_name": "John",
- "last_name": "Mcinturff",
+ "first_name": "Stephanie",
+ "last_name": "Taylor",
"team": 9,
"peg_number": null
}
@@ -273,8 +273,8 @@
"model": "mainapp.member",
"pk": 28,
"fields": {
- "first_name": "Ivette",
- "last_name": "Paterson",
+ "first_name": "John",
+ "last_name": "Brennan",
"team": 10,
"peg_number": null
}
@@ -283,8 +283,8 @@
"model": "mainapp.member",
"pk": 29,
"fields": {
- "first_name": "Mary",
- "last_name": "Sussman",
+ "first_name": "Kenneth",
+ "last_name": "Duff",
"team": 10,
"peg_number": null
}
@@ -293,8 +293,8 @@
"model": "mainapp.member",
"pk": 30,
"fields": {
- "first_name": "Peter",
- "last_name": "Faison",
+ "first_name": "Matthew",
+ "last_name": "Whitesell",
"team": 10,
"peg_number": null
}
diff --git a/src/mainapp/fixtures/teams_fixture.json b/src/mainapp/fixtures/teams_fixture.json
index 1de0167..65f6286 100644
--- a/src/mainapp/fixtures/teams_fixture.json
+++ b/src/mainapp/fixtures/teams_fixture.json
@@ -3,70 +3,70 @@
"model": "mainapp.team",
"pk": 1,
"fields": {
- "section_letter": "P"
+ "section_letter": "D"
}
},
{
"model": "mainapp.team",
"pk": 2,
"fields": {
- "section_letter": "C"
+ "section_letter": "P"
}
},
{
"model": "mainapp.team",
"pk": 3,
"fields": {
- "section_letter": "Y"
+ "section_letter": "L"
}
},
{
"model": "mainapp.team",
"pk": 4,
"fields": {
- "section_letter": "B"
+ "section_letter": "M"
}
},
{
"model": "mainapp.team",
"pk": 5,
"fields": {
- "section_letter": "T"
+ "section_letter": "Z"
}
},
{
"model": "mainapp.team",
"pk": 6,
"fields": {
- "section_letter": "K"
+ "section_letter": "Y"
}
},
{
"model": "mainapp.team",
"pk": 7,
"fields": {
- "section_letter": "N"
+ "section_letter": "J"
}
},
{
"model": "mainapp.team",
"pk": 8,
"fields": {
- "section_letter": "S"
+ "section_letter": "W"
}
},
{
"model": "mainapp.team",
"pk": 9,
"fields": {
- "section_letter": "Z"
+ "section_letter": "T"
}
},
{
"model": "mainapp.team",
"pk": 10,
"fields": {
- "section_letter": "U"
+ "section_letter": "F"
}
}
]
\ No newline at end of file
diff --git a/src/static/js/custom.js b/src/static/js/custom.js
new file mode 100644
index 0000000..6304b64
--- /dev/null
+++ b/src/static/js/custom.js
@@ -0,0 +1,22 @@
+/**
+ * Custom javascript for the entire website.
+ * Add to this file for javascript that will be ran globally.
+ */
+
+
+$(document).ready(() => {
+ // Enable all tooltips on the page
+ const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
+ const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
+});
+
+
+/**
+ * Returns boolean if the string is empty or only contains whitespace.
+ *
+ * @param {string} string - The string to check against.
+ * @returns {boolean} - The result as boolean
+ */
+function isEmptyOrSpaces(string) {
+ return string === null || string.match(/^ *$/) !== null;
+}
diff --git a/src/static/js/teams.js b/src/static/js/teams.js
index 6f75c2d..01e3f47 100644
--- a/src/static/js/teams.js
+++ b/src/static/js/teams.js
@@ -5,15 +5,12 @@ jQuery.expr[':'].icontains = function(a, i, m) {
$(document).ready(() => {
- // Enable all tooltips on the page
- const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
- const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
-
teamsLoading(true); // show the loading icon
// Search functionality
var searchTimeout = null;
+ // Bind searching to when a key is lifted on the searchbar
$("#search").keyup(() => {
clearTimeout(searchTimeout);
teamsLoading(true);
@@ -23,17 +20,20 @@ $(document).ready(() => {
}, 500)
});
+ // Bind searching to the search button
$("#searchButton").on("click", () => {
fetchAndLoadTeams(...getFilters());
});
+ // Bind searching to the sort buttons
$("#sortForm input").on("click", function() {
const name = $(this).attr("name");
- localStorage.setItem(name, $(`input[name='${name}']:checked`, "#sortForm").val());7
+ localStorage.setItem(name, $(`input[name='${name}']:checked`, "#sortForm").val());
fetchAndLoadTeams(...getFilters());
});
+ // Load the last saved sort settings TODO: use local storage so it only saves on one reload
const sortTeamsValue = localStorage.getItem("sortTeams");
if (sortTeamsValue !== null) {
$("#sortForm input[name='sortTeams']").val([sortTeamsValue]);
@@ -44,10 +44,8 @@ $(document).ready(() => {
$("#sortForm input[name='sortMembers']").val([sortMembersValue]);
}
- // Edit member form validation options
- $("#editMemberForm").validate({
- errorClass: "text-danger mb-2"
- })
+ // Customize form validation for the edit members form
+ $("#editMemberForm").validate({ errorClass: "text-danger mb-2" });
// Prevent dropdowns from closing when clicking inside
$('.dropdown-menu').on('hide.bs.dropdown', function (e) {
@@ -59,10 +57,16 @@ $(document).ready(() => {
}
});
- fetchAndLoadTeams(...getFilters()); // load the teams with default filters
+ // load the teams with default filters
+ fetchAndLoadTeams(...getFilters());
});
+/**
+ * Returns an array of search filters in this order [search, sortTeams, sortMembers]
+ *
+ * @returns {Array} The array of filters, each filter is a string.
+ */
function getFilters() {
return [
$("#search").val(),
@@ -71,14 +75,6 @@ function getFilters() {
]
}
-/**
- * Returns bool if the string is empty or only contains whitespace
- *
- * **/
-function isEmptyOrSpaces(string) {
- return string === null || string.match(/^ *$/) !== null;
-}
-
function loadTeams(teams, highlightText="") {
$("#teamsContainer").html(""); // Clear the previous listed teams
@@ -113,7 +109,7 @@ function loadTeams(teams, highlightText="") {
`
);
- // Whilimage.pnge we have the team, iterate over and add it's members
+ // While we have the team, iterate over and add it's members
team.members.forEach((member) => {
const fullname = member.first + " " + member.last;
@@ -139,7 +135,7 @@ function loadTeams(teams, highlightText="") {
`
- );
+ )
});
});
@@ -153,6 +149,10 @@ function loadTeams(teams, highlightText="") {
// Bind edit team modal to the edit team button
$(".team > h3 > button").on("click", function() {
+ $(this).addClass("active");
+ $("#editTeamModal").off("hidden.bs.modal").on("hidden.bs.modal", function() {
+ $("#teamsContainer").find(".team").find("button.active").removeClass("active");
+ });
openEditTeamModal($(this).parent().parent().data("number"));
});
diff --git a/src/templates/base.html b/src/templates/base.html
index d1bfb6b..a570ece 100644
--- a/src/templates/base.html
+++ b/src/templates/base.html
@@ -20,6 +20,7 @@
+
{% block scripts %}
{% endblock scripts %}