Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
328 changes: 328 additions & 0 deletions design_document.md

Large diffs are not rendered by default.

Binary file added public/assets/icons/360-dashboard-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/Check-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/Copy-icon-16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/Copy-icon-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/Copy-icon-32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/Copy-icon-48.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/List-hyperlinks-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/List-submisstions-128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/List-submisstions-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/Uncheck-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-2-icon-16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-2-icon-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-2-icon-32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-2-icon-48.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-assignment-128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-assignment-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-private-128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-private-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-private.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-public-128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-public-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-signup-sheet-128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-signup-sheet-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-ta-128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/add-ta-24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/icons/assign-course-128.png
Binary file added public/assets/icons/assign-course-96.png
Binary file added public/assets/icons/assign-course-blue-24.png
Binary file added public/assets/icons/assign-course-green-24.png
1,024 changes: 512 additions & 512 deletions public/assets/icons/assign-reviewers.svg

Large diffs are not rendered by default.

Binary file added public/assets/icons/delete-icon-16.png
Binary file added public/assets/icons/delete-icon-24.png
Binary file added public/assets/icons/delete-icon-32.png
Binary file added public/assets/icons/delete-icon-48.png
Binary file added public/assets/icons/edit-icon-16.png
Binary file added public/assets/icons/edit-icon-24.png
Binary file added public/assets/icons/edit-icon-32.png
Binary file added public/assets/icons/edit-icon-48.png
Binary file added public/assets/icons/edit-signup-sheet-128.png
Binary file added public/assets/icons/edit-signup-sheet-24.png
Binary file added public/assets/icons/grade-essay-icon-24.png
Binary file added public/assets/icons/info.png
Binary file added public/assets/icons/lock-disabled-icon-16.png
Binary file added public/assets/icons/lock-disabled-icon-24.png
Binary file added public/assets/icons/lock-disabled-icon-32.png
Binary file added public/assets/icons/lock-disabled-icon-48.png
Binary file added public/assets/icons/lock-off-disabled-icon-16.png
Binary file added public/assets/icons/lock-off-disabled-icon-24.png
Binary file added public/assets/icons/lock-off-disabled-icon-32.png
Binary file added public/assets/icons/lock-off-disabled-icon-48.png
Binary file added public/assets/icons/remove-from-course-24.png
Binary file added public/assets/icons/remove-from-course-96.png
Binary file added public/assets/icons/run-lottery.png
Binary file added public/assets/icons/signup.png
Binary file added public/assets/icons/text_macro.png
Binary file added public/assets/icons/view-publish-rights-128.png
Binary file added public/assets/icons/view-publish-rights-24.png
Binary file added public/assets/icons/view-suggestion-128.png
Binary file added public/assets/icons/view-suggestion-24.png
47 changes: 34 additions & 13 deletions src/components/Table/Pagination.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,12 @@ import { Col, Pagination as BPagination, Row } from "react-bootstrap";
import Input from "../Input";
import Select from "../Select";

/**
* @author Ankur Mundra on May, 2023
*/

interface PaginationProps {
nextPage: () => void;
previousPage: () => void;
canNextPage: () => boolean;
canPreviousPage: () => boolean;
setPageIndex: (pageIndex: number) => void;
setPageIndex: (updater: number | ((pageIndex: number) => number)) => void;
setPageSize: (pageSize: number) => void;
getPageCount: () => number;
getState: () => TableState;
Expand All @@ -30,6 +26,28 @@ const Pagination: React.FC<PaginationProps> = (props) => {
getPageCount,
getState,
} = props;

const totalPages = getPageCount();
const isPaginationDisabled = totalPages <= 1;

const handlePageSizeChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
const selectedValue = e.target.value;
const pageSize =
selectedValue === `${Number.MAX_SAFE_INTEGER}`
? Number.MAX_SAFE_INTEGER // Show all (effectively no pagination)
: Number(selectedValue);

setPageSize(pageSize);

// Reset to the first page when "Show All" is selected
if (pageSize === Number.MAX_SAFE_INTEGER) {
setPageIndex(0);
}
};

// Handle case when "Show All" is selected and pagination is disabled
if (isPaginationDisabled && getState().pagination.pageSize !== Number.MAX_SAFE_INTEGER) return null;

return (
<Row className="justify-content-center">
<Col xs="auto">
Expand All @@ -38,22 +56,19 @@ const Pagination: React.FC<PaginationProps> = (props) => {
<BPagination.Prev onClick={() => previousPage()} disabled={!canPreviousPage()} />
<BPagination.Next onClick={() => nextPage()} disabled={!canNextPage()} />
<BPagination.Last
onClick={() => setPageIndex(getPageCount() - 1)}
onClick={() => setPageIndex(totalPages - 1)}
disabled={!canNextPage()}
/>
</BPagination>
</Col>
{/*<Col xs="auto">*/}
{/* {`Page ${getState().pagination.pageIndex + 1} of ${getPageCount()}`}*/}
{/*</Col>*/}
<Col xs="auto">
<Input
id="columnFilter"
label="Go to page"
input={{
type: "number",
min: "1",
max: getPageCount(),
max: totalPages,
defaultValue: getState().pagination.pageIndex + 1,
onChange: (e: React.ChangeEvent<HTMLInputElement>) => {
const page = e.target.value ? Number(e.target.value) - 1 : 0;
Expand All @@ -69,16 +84,22 @@ const Pagination: React.FC<PaginationProps> = (props) => {
{ label: "Show 10", value: "10" },
{ label: "Show 25", value: "25" },
{ label: "Show 50", value: "50" },
{ label: "Show All", value: `${Number.MAX_SAFE_INTEGER}` }, // Add "Show All" with a large value
]}
input={{
value: getState().pagination.pageSize,
onChange: (e: React.ChangeEvent<HTMLSelectElement>) =>
setPageSize(Number(e.target.value)),
onChange: handlePageSizeChange, // Call the handlePageSizeChange function
}}
/>
</Col>
</Row>
);
};

export default Pagination;
const PaginationWrapper: React.FC<PaginationProps> = (props) => {
const totalPages = props.getPageCount();
if (totalPages <= 1 && props.getState().pagination.pageSize !== Number.MAX_SAFE_INTEGER) return null;
return <Pagination {...props} />;
};

export default PaginationWrapper;