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 %}