import { Box } from "@chakra-ui/react"; import { Text, useColorModeValue } from "@chakra-ui/react"; import { useEffect, useState } from "react"; import { MessageView } from "src/components/Messages"; import { MessageTable } from "src/components/Messages/MessageTable"; import { LabelRadioGroup } from "src/components/Survey/LabelRadioGroup"; import { LabelSliderGroup } from "src/components/Survey/LabelSliderGroup"; import { TwoColumnsWithCards } from "src/components/Survey/TwoColumnsWithCards"; import { TaskSurveyProps } from "src/components/Tasks/Task"; import { TaskType } from "src/types/Task"; export const LabelTask = ({ task, taskType, onReplyChanged, isEditable, }: TaskSurveyProps<{ text: string; labels: { [k: string]: number }; message_id: string }>) => { const valid_labels = task.valid_labels; const [sliderValues, setSliderValues] = useState(new Array(valid_labels.length).fill(0)); useEffect(() => { onReplyChanged({ content: { labels: {}, text: task.reply, message_id: task.message_id }, state: "DEFAULT" }); }, [task.reply, task.message_id, onReplyChanged]); const onSliderChange = (values: number[]) => { console.assert(valid_labels.length === sliderValues.length); const labels = Object.fromEntries(valid_labels.map((label, i) => [label, sliderValues[i]])); onReplyChanged({ content: { labels, text: task.reply || task.prompt, message_id: task.message_id }, state: "VALID", }); setSliderValues(values); }; const cardColor = useColorModeValue("gray.100", "gray.700"); const titleColor = useColorModeValue("gray.800", "gray.300"); const labelColor = useColorModeValue("gray.600", "gray.400"); return (
<> {taskType.label} {taskType.overview} {task.conversation ? ( ) : ( )} {valid_labels.length === 1 ? ( ) : ( )}
); };