github.com/quickfeed/quickfeed@v0.0.0-20240507093252-ed8ca812a09c/public/src/components/manual-grading/MarkReadyButton.tsx (about) 1 import React from "react" 2 import { Review } from "../../../proto/qf/types_pb" 3 import { Color } from "../../Helpers" 4 import { useActions, useAppState } from "../../overmind" 5 import Button, { ButtonType } from "../admin/Button" 6 7 8 const MarkReadyButton = ({ review }: { review: Review }) => { 9 const allCriteriaGraded = useAppState((state) => state.review.graded === state.review.criteriaTotal) 10 const actions = useActions() 11 const ready = review.ready 12 13 const handleMarkReady = React.useCallback(() => { 14 if (allCriteriaGraded || ready) { 15 actions.review.updateReady(!ready) 16 } 17 }, [allCriteriaGraded, ready]) 18 19 return ( 20 <Button 21 text={ready ? "Mark In progress" : "Mark Ready"} 22 color={ready ? Color.YELLOW : Color.GREEN} 23 type={ready ? ButtonType.BADGE : ButtonType.BUTTON} 24 className={ready ? "float-right" : allCriteriaGraded ? "" : "disabled"} 25 onClick={handleMarkReady} 26 /> 27 ) 28 } 29 30 export default MarkReadyButton