JustinCann
11/16/2016 - 10:02 AM

Used for custom pagination

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;

            });
        }
    }

});