UNPKG

@datalayer/core

Version:

[![Datalayer](https://assets.datalayer.tech/datalayer-25.svg)](https://datalayer.io)

67 lines (66 loc) 3.22 kB
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime"; /* * Copyright (c) 2023-2025 Datalayer, Inc. * Distributed under the terms of the Modified BSD License. */ import { useMemo } from 'react'; import { useTheme, Tooltip, Button } from '@primer/react'; import { Box } from '@datalayer/primer-addons'; const getExercisePoints = (studentItem) => { if (studentItem && studentItem.points) { return studentItem.points; } return 0; }; export const StudentItemStatus = (props) => { const { student, studentItem } = props; const { theme } = useTheme(); const okColor = useMemo(() => theme?.colorSchemes.light.colors.success.muted, []); const nokColor = useMemo(() => theme?.colorSchemes.light.colors.severe.muted, []); if (student && studentItem) { switch (studentItem.itemType) { case 'dataset': { const datasetColor = studentItem?.completed ? okColor : nokColor; return (_jsx(Box, { sx: { backgroundColor: datasetColor, width: '14px', height: '14px', borderRadius: 3, }, ml: 1 })); } case 'lesson': { const lessonColor = studentItem?.completed ? okColor : nokColor; return (_jsx(Box, { sx: { backgroundColor: lessonColor, width: '14px', height: '14px', borderRadius: 3, }, ml: 1 })); } case 'exercise': { const exerciseColor = getExercisePoints(studentItem) > 0 ? okColor : nokColor; return (_jsx(Box, { sx: { backgroundColor: exerciseColor, width: '14px', height: '14px', borderRadius: 3, }, ml: 1 })); } case 'assignment': return (_jsxs(Box, { display: "flex", children: [studentItem.nbgradesTotalScore !== undefined && studentItem.nbgradesTotalPoints !== undefined && (_jsxs(Box, { children: [studentItem.nbgradesTotalScore, " /", ' ', studentItem.nbgradesTotalPoints] })), studentItem.nbgrades && (_jsx(Box, { display: "flex", ml: 3, children: studentItem?.nbgrades.map(grade => { const gradeColor = grade.score_f === grade.points_f ? okColor : nokColor; return (_jsx(Tooltip, { text: grade.grade_id_s, children: _jsx(Button, { variant: "invisible", children: _jsx(Box, { sx: { backgroundColor: gradeColor, width: '14px', height: '14px', borderRadius: 3, }, ml: 1 }) }) })); }) }))] })); default: return _jsx(_Fragment, {}); } } return _jsx(_Fragment, {}); }; export default StudentItemStatus;