Used for custom pagination
// controls the pagination of the unverified teachers on the dashboard
$(function() {
var classesStudents = $('#classesStudents');
var pagination = $('.customDashboardPagination');
// function for displaying current page and hiding others
function showPage(currentPage) {
var numberLinks = $('.numberLinks a[data-page-number]');
numberLinks.css('color', '#F7902E');
var currentPageLink = $('.numberLinks a[data-page-number="'+currentPage+'"]');
currentPageLink.css('color', '#333');
var rowToHide = $("tr[data-page-number]");
rowToHide.hide();
var rowToShow = $("tr[data-page-number=" + currentPage + "]");
rowToShow.show();
return false;
}
// function for hiding classesStudents div when empty
function hideElementsWhenEmpty(rowCount) {
if (rowCount === 0) {
classesStudents.fadeOut();
}
}
// function for counting the number of pages
function countPages() {
var rowCount = $('tbody.paginated-table tr').length;
hideElementsWhenEmpty(rowCount);
var totalPages = 0;
if (rowCount > 0) {
totalPages = Math.ceil(rowCount / 10);
}
return totalPages;
}
// function for moving rows to the corrct pages
function renumberRows(currentPage) {
var numberOfPages = parseInt(countPages());
var nextPage = parseInt(currentPage) + 1;
var lastPage = parseInt(numberOfPages) + 1;
//check if extra page exists
var checkLastPage = $('.numberLinks a[data-page-number="'+lastPage+'"]');
if (checkLastPage.length === 0) {
lastPage = numberOfPages;
}
// console.log("nextPage: " + nextPage);
// console.log("lastPage: " + lastPage);
// console.log("currentPage: " + currentPage);
// console.log("numberOfPages: " + numberOfPages);
if (numberOfPages >= 1) {
for (var i = nextPage; i < lastPage + 1; i++) {
var rowToChange = $("tr[data-page-number=" + i + "]:first");
if (rowToChange.length > 0) {
rowToChange.attr("data-page-number", i - 1 );
}
}
} if (lastPage > numberOfPages) {
// remove empty pages
console.log('page being removed: ' + lastPage);
var linkToRemove = $('.numberLinks a[data-page-number="'+lastPage+'"]');
linkToRemove.remove();
if (currentPage == lastPage) {
currentPage = parseInt(currentPage) - 1;
}
}
if (currentPage > 0) {
showPage(currentPage);
}
if (numberOfPages == 1) {
var customDashboardPagination = $('.customDashboardPagination');
customDashboardPagination.hide();
setTimeout(function() {
customDashboardPagination.remove();
}, 500);
}
}
// check that the student classes element and pagination elements exist
if (classesStudents.length > 0 && pagination.length > 0) {
var numberOfPages = countPages();
var currentPage = 1;
if (numberOfPages > 0) {
if (numberOfPages > 1) {
// add pagination links
for (var i = 1; i < numberOfPages + 1; i++) {
pagination.find('.numberLinks').append('<a href="" data-page-number="' + i + '">' + i + '</a>');
}
// colour the first page number
var numberLinks = $('.numberLinks a[data-page-number]');
if (numberLinks.length > 0) {
$('.numberLinks a[data-page-number="1"]').css('color', '#333');
}
}
else {
// hide pagination
$('.customDashboardPagination').hide();
}
// manage previous link clicks
pagination.find('.paginationPrevLink').click(function() {
currentPage--;
if (currentPage < 1) {
currentPage = 1;
}
showPage(currentPage);
return false;
});
// manage previous link clicks
pagination.find('.paginationNextLink').click(function() {
currentPage++;
if (currentPage > numberOfPages) {
currentPage = numberOfPages;
}
showPage(currentPage);
return false;
});
// manage number link clicks
pagination.find('.numberLinks a').click(function(e) {
currentPage = $(this).attr("data-page-number");
showPage(currentPage);
return false;
});
classesStudents.find('a.updateButton').click(function() {
userid = $(this).attr("data-userid");
var row = $(this).closest('tr');
var select = $("select[name=class_" + userid + "]");
var selectedClass = select.val();
// console.log("userid: " + userid);
// console.log("selectedClass: " + selectedClass);
var ajaxData = "&lstUserId=" + userid + "&numClassId=" + selectedClass + "";
if (userid !== '' && row.length > 0 && selectedClass !== '') {
showModalTimer('Updating');
$.ajax({
type: "POST",
url: "index.cfm?go=teacherStudent.assignToClass",
data: ajaxData,
success: function() {
// console.log('success, now hide and remove that row');
closeModalTimer();
row.fadeOut(500);
setTimeout(function() {
row.remove();
renumberRows(currentPage);
}, 500);
},
fail: function() {
closeModalTimer();
},
error: function() {
closeModalTimer();
}
});
} else {
// console.log('need more info');
select.css('border-color', '#ec5b45');
select.change(function() {
$(this).css('border-color', '#70cdde');
});
}
return false;
});
}
}
});