import { Button, message } from "antd"; import { useEffect, useState } from "react"; import { ReloadOutlined } from "@ant-design/icons"; import { get } from "../../../request"; import { TChannelType } from "../../api/Channel"; import { ISentenceListResponse } from "../../api/Corpus"; import { ISentence } from "../SentEdit"; import SentCell from "./SentCell"; import SentAdd from "./SentAdd"; import { useAppSelector } from "../../../hooks"; import { currentUser as _currentUser } from "../../../reducers/current-user"; import { IChannel } from "../../channel/Channel"; interface IWidget { book: number; para: number; wordStart: number; wordEnd: number; type: TChannelType; channelsId?: string[]; reload?: boolean; onReload?: Function; onCreate?: Function; } const SentCanReadWidget = ({ book, para, wordStart, wordEnd, type, channelsId, reload = false, onReload, onCreate, }: IWidget) => { const [sentData, setSentData] = useState([]); const [channels, setChannels] = useState(); const user = useAppSelector(_currentUser); const load = () => { const sentId = `${book}-${para}-${wordStart}-${wordEnd}`; let url = `/v2/sentence?view=sent-can-read&sentence=${sentId}&type=${type}&mode=edit&html=true`; url += channelsId ? `&channels=${channelsId.join()}` : ""; console.log("url", url); get(url) .then((json) => { if (json.ok) { console.log("sent load", json.data.rows); const channels: string[] = json.data.rows.map( (item) => item.channel.id ); setChannels(channels); const newData: ISentence[] = json.data.rows.map((item) => { return { id: item.id, content: item.content, html: item.html, book: item.book, para: item.paragraph, wordStart: item.word_start, wordEnd: item.word_end, editor: item.editor, studio: item.studio, channel: item.channel, suggestionCount: item.suggestionCount, translationChannels: channelsId, updateAt: item.updated_at, }; }); console.log("new data", newData); setSentData(newData); } else { message.error(json.message); } }) .finally(() => { if (reload && typeof onReload !== "undefined") { onReload(); } }); }; useEffect(() => { load(); }, []); useEffect(() => { if (reload) { load(); } }, [reload]); return (
{ if (typeof user === "undefined") { return; } const newSent: ISentence = { content: "", contentType: "markdown", html: "", book: book, para: para, wordStart: wordStart, wordEnd: wordEnd, editor: { id: user.id, nickName: user.nickName, userName: user.realName, }, channel: channel, translationChannels: channelsId, updateAt: "", openInEditMode: true, }; setSentData((origin) => { return [newSent, ...origin]; }); setChannels((origin) => { if (origin) { if (!origin.includes(newSent.channel.id)) { origin.push(newSent.channel.id); return origin; } } else { return [newSent.channel.id]; } }); if (typeof onCreate !== "undefined") { onCreate(); } }} /> {sentData.map((item, id) => { return ( { console.log("onChange", value); setSentData((origin) => { origin.forEach((value1, index, array) => { if (value1.id === value.id) { array[index] = value; } }); return origin; }); }} /> ); })}
); }; export default SentCanReadWidget;