Pull Request branch dev-clone to main #1
|
|
@ -60,6 +60,7 @@ export default function AssessmentPage() {
|
||||||
}>({});
|
}>({});
|
||||||
const fileInputRef = useRef<HTMLInputElement>(null);
|
const fileInputRef = useRef<HTMLInputElement>(null);
|
||||||
const [modalOpen, setModalOpen] = useState(false);
|
const [modalOpen, setModalOpen] = useState(false);
|
||||||
|
const [selectedAspectId, setSelectedAspectId] = useState<string | null>(null);
|
||||||
const [selectedSubAspectId, setSelectedSubAspectId] = useState<string | null>(null);
|
const [selectedSubAspectId, setSelectedSubAspectId] = useState<string | null>(null);
|
||||||
const [assessmentId, setAssessmentId] = useState<string | null>(null);
|
const [assessmentId, setAssessmentId] = useState<string | null>(null);
|
||||||
const [answers, setAnswers] = useState<{ [key: string]: string }>({});
|
const [answers, setAnswers] = useState<{ [key: string]: string }>({});
|
||||||
|
|
@ -99,10 +100,13 @@ export default function AssessmentPage() {
|
||||||
|
|
||||||
if (firstMatchingSubAspect) {
|
if (firstMatchingSubAspect) {
|
||||||
setSelectedSubAspectId(firstMatchingSubAspect.id);
|
setSelectedSubAspectId(firstMatchingSubAspect.id);
|
||||||
|
setSelectedAspectId(aspectsQuery.data.data.find(aspect =>
|
||||||
|
aspect.subAspects.some(sub => sub.id === firstMatchingSubAspect.id)
|
||||||
|
)?.id || null); // Set selectedAspectId based on the found sub-aspect
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [aspectsQuery.data, selectedSubAspectId, data?.data]);
|
}, [aspectsQuery.data, selectedSubAspectId, data?.data])
|
||||||
|
|
||||||
const handleConfirmFinish = () => {
|
const handleConfirmFinish = () => {
|
||||||
if (assessmentId) {
|
if (assessmentId) {
|
||||||
|
|
@ -124,14 +128,21 @@ export default function AssessmentPage() {
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
// Fetch average scores berdasarkan assessmentId yang diambil dari URL
|
// Fetch average scores by aspect
|
||||||
const averageScoreQuery = useQuery(
|
const averageScoreQuery = useQuery(getAverageScoreQueryOptions(assessmentId || ""));
|
||||||
getAverageScoreQueryOptions(assessmentId || "")
|
|
||||||
|
// Fetch average scores by sub-aspect
|
||||||
|
const averageScoreSubAspectQuery = useQuery(getAverageScoreSubAspectQueryOptions(assessmentId || ""));
|
||||||
|
|
||||||
|
// Filter average score aspect berdasarkan sub-aspect yang dipilih
|
||||||
|
const filteredAverageScores = averageScoreQuery.data?.aspects?.filter(aspect =>
|
||||||
|
aspect.subAspects.some(subAspect => subAspect.subAspectId === selectedSubAspectId)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Fetch average scores for sub-aspects
|
// Filter average scores for the selected sub-aspect
|
||||||
const averageScoreSubAspectQuery = useQuery(
|
const averageScoresForSelectedSubAspect = averageScoreSubAspectQuery.data?.subAspects?.filter(
|
||||||
getAverageScoreSubAspectQueryOptions(assessmentId || "")
|
(subAspect) =>
|
||||||
|
subAspect.aspectId === selectedAspectId // Use the appropriate property for filtering
|
||||||
);
|
);
|
||||||
|
|
||||||
// Mutation function to toggle flag
|
// Mutation function to toggle flag
|
||||||
|
|
@ -519,42 +530,46 @@ export default function AssessmentPage() {
|
||||||
<div className="mt-4">
|
<div className="mt-4">
|
||||||
<Card shadow="sm" p="md" radius="md" withBorder>
|
<Card shadow="sm" p="md" radius="md" withBorder>
|
||||||
<Stack>
|
<Stack>
|
||||||
{averageScores && averageScores.length > 0 ? (
|
{/* Skor Aspek */}
|
||||||
averageScores.map((aspect: any) => (
|
<div>
|
||||||
<div key={aspect.AspectId} className="flex justify-between items-center">
|
{filteredAverageScores && filteredAverageScores.length > 0 ? (
|
||||||
<Text className="text-xl text-gray-400">
|
filteredAverageScores.map((aspect) => (
|
||||||
{aspect.AspectName}
|
<div key={aspect.aspectId} className="flex justify-between items-center">
|
||||||
</Text>
|
<Text className="text-xl text-gray-400">
|
||||||
<Text className="text-xl font-bold">
|
{aspect.aspectName}
|
||||||
{parseFloat(aspect.averageScore).toFixed(1)}
|
</Text>
|
||||||
</Text>
|
<Text className="text-xl font-bold">
|
||||||
</div>
|
{parseFloat(aspect.averageScore).toFixed(2)}
|
||||||
))
|
</Text>
|
||||||
) : (
|
</div>
|
||||||
<Text>Tidak ada data skor.</Text>
|
))
|
||||||
)}
|
) : (
|
||||||
|
<Text className="text-lg text-gray-400">Data aspek kosong</Text>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Garis pembatas */}
|
{/* Garis pembatas */}
|
||||||
<div>
|
<div>
|
||||||
<hr className="border-t-2 border-gray-300 w-full mx-auto" />
|
<hr className="border-t-2 border-gray-300 w-full mx-auto" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{averageScoresSubAspect && averageScoresSubAspect.length > 0 && (
|
{/* Skor Sub-Aspek */}
|
||||||
<Stack>
|
<div>
|
||||||
{averageScoresSubAspect.map((subAspects: any) => {
|
{averageScoresForSelectedSubAspect?.length ? (
|
||||||
return (
|
averageScoresForSelectedSubAspect.map((subAspect) => (
|
||||||
<div key={subAspects.subAspectId} className="flex justify-between items-center">
|
<div key={subAspect.aspectId} className="flex justify-between items-center">
|
||||||
<Text className="text-lg text-gray-400">
|
<Text className="text-lg text-gray-400">
|
||||||
{subAspects.subAspectName}
|
{subAspect.subAspectName}
|
||||||
</Text>
|
</Text>
|
||||||
<Text className="text-lg font-bold">
|
<Text className="text-lg font-bold">
|
||||||
{parseFloat(subAspects.averageScore).toFixed(1)}
|
{parseFloat(subAspect.averageScore).toFixed(2)}
|
||||||
</Text>
|
</Text>
|
||||||
</div>
|
</div>
|
||||||
);
|
))
|
||||||
})}
|
) : (
|
||||||
</Stack>
|
<Text className="text-lg text-gray-400">Data sub aspek kosong</Text>
|
||||||
)}
|
)}
|
||||||
|
</div>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
{/* Tombol Selesai */}
|
{/* Tombol Selesai */}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user