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