Files
Open-Assistant/website/src/components/Tasks/EvaluateTask.tsx
T
Adrian Cowan 805bc33ba4 website: Unify task controls
Also happens to fix some issues with the no-changes are-you-sure dialog only appearing once and other form values not being reset correctly.
2023-01-11 02:59:10 +11:00

41 lines
1.5 KiB
TypeScript

import { useEffect } from "react";
import { MessageTable } from "src/components/Messages/MessageTable";
import { Sortable } from "src/components/Sortable/Sortable";
import { SurveyCard } from "src/components/Survey/SurveyCard";
import { TaskSurveyProps } from "src/components/Tasks/Task";
export const EvaluateTask = ({ task, onReplyChanged }: TaskSurveyProps<{ ranking: number[] }>) => {
let messages = [];
if (task.conversation) {
messages = task.conversation.messages;
messages = messages.map((message, index) => ({ ...message, id: index }));
}
useEffect(() => {
const conversationMsgs = task.conversation ? task.conversation.messages : [];
const defaultRanking = conversationMsgs.map((message, index) => index);
onReplyChanged({
content: { ranking: defaultRanking },
state: "DEFAULT",
});
}, [task.conversation, onReplyChanged]);
const onRank = (newRanking: number[]) => {
onReplyChanged({ content: { ranking: newRanking }, state: "VALID" });
};
const valid_labels = task.valid_labels;
const sortables = task.replies ? "replies" : "prompts";
return (
<SurveyCard className="max-w-7xl mx-auto h-fit mb-24">
<h5 className="text-lg font-semibold mb-4">Instructions</h5>
<p className="text-lg py-1">
Given the following {sortables}, sort them from best to worst, best being first, worst being last.
</p>
<MessageTable messages={messages} valid_labels={valid_labels} />
<Sortable items={task[sortables]} onChange={onRank} className="my-8" />
</SurveyCard>
);
};