feat:form-ai
This commit is contained in:
parent
da871a8671
commit
fdc408e303
|
|
@ -35,6 +35,7 @@ import { Textarea } from "@/components/ui/textarea";
|
||||||
import { loading } from "@/lib/swal";
|
import { loading } from "@/lib/swal";
|
||||||
import {
|
import {
|
||||||
generateDataArticle,
|
generateDataArticle,
|
||||||
|
getDetailArticle,
|
||||||
getGenerateKeywords,
|
getGenerateKeywords,
|
||||||
getGenerateTitle,
|
getGenerateTitle,
|
||||||
} from "@/service/content/ai";
|
} from "@/service/content/ai";
|
||||||
|
|
@ -86,14 +87,17 @@ export default function FormImageAI() {
|
||||||
const [selectedSEO, setSelectedSEO] = useState<string>("");
|
const [selectedSEO, setSelectedSEO] = useState<string>("");
|
||||||
const [title, setTitle] = useState<string>("");
|
const [title, setTitle] = useState<string>("");
|
||||||
const [selectedAdvConfig, setSelectedAdvConfig] = useState<string>("");
|
const [selectedAdvConfig, setSelectedAdvConfig] = useState<string>("");
|
||||||
const [articleIds, setArticleIds] = useState<any>([]);
|
const [editingArticleId, setEditingArticleId] = useState<string | null>(null);
|
||||||
|
const [isLoading, setIsLoading] = useState<boolean>(false);
|
||||||
|
|
||||||
|
const [articleIds, setArticleIds] = useState<string[]>([]);
|
||||||
|
const [isGeneratedArticle, setIsGeneratedArticle] = useState(false);
|
||||||
|
const [articleBody, setArticleBody] = useState<string>("");
|
||||||
const [selectedArticleId, setSelectedArticleId] = useState<string | null>(
|
const [selectedArticleId, setSelectedArticleId] = useState<string | null>(
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
const [isGeneratedArticle, setIsGeneratedArticle] = useState(false);
|
const [detailData, setDetailData] = useState<any>(null);
|
||||||
const [articleBody, setArticleBody] = useState<string>("");
|
const [articleImages, setArticleImages] = useState<string[]>([]);
|
||||||
const [editingArticleId, setEditingArticleId] = useState<string | null>(null);
|
|
||||||
const [isLoading, setIsLoading] = useState<boolean>(false);
|
|
||||||
|
|
||||||
const [selectedTarget, setSelectedTarget] = useState("");
|
const [selectedTarget, setSelectedTarget] = useState("");
|
||||||
const [unitSelection, setUnitSelection] = useState({
|
const [unitSelection, setUnitSelection] = useState({
|
||||||
|
|
@ -211,7 +215,6 @@ export default function FormImageAI() {
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleGenerateArtikel = async () => {
|
const handleGenerateArtikel = async () => {
|
||||||
loading();
|
|
||||||
const request = {
|
const request = {
|
||||||
advConfig: selectedAdvConfig,
|
advConfig: selectedAdvConfig,
|
||||||
style: selectedWritingStyle,
|
style: selectedWritingStyle,
|
||||||
|
|
@ -219,7 +222,7 @@ export default function FormImageAI() {
|
||||||
connectToWeb: true,
|
connectToWeb: true,
|
||||||
lang: selectedLanguage,
|
lang: selectedLanguage,
|
||||||
pointOfView: "None",
|
pointOfView: "None",
|
||||||
title: selectedTitle,
|
title: title,
|
||||||
imageSource: "Web",
|
imageSource: "Web",
|
||||||
mainKeyword: selectedMainKeyword,
|
mainKeyword: selectedMainKeyword,
|
||||||
additionalKeywords: selectedSEO,
|
additionalKeywords: selectedSEO,
|
||||||
|
|
@ -241,7 +244,7 @@ export default function FormImageAI() {
|
||||||
const newArticleId = res?.data?.data?.id;
|
const newArticleId = res?.data?.data?.id;
|
||||||
setIsGeneratedArticle(true);
|
setIsGeneratedArticle(true);
|
||||||
|
|
||||||
setArticleIds((prevIds: any) => {
|
setArticleIds((prevIds: string[]) => {
|
||||||
if (prevIds.length < 5) {
|
if (prevIds.length < 5) {
|
||||||
return [...prevIds, newArticleId];
|
return [...prevIds, newArticleId];
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -251,12 +254,30 @@ export default function FormImageAI() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Cookies.set("nulisAIArticleIdTemp", articleIds);
|
Cookies.set("nulisAIArticleIdTemp", JSON.stringify(articleIds));
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleArticleIdClick = (articleId: string) => {
|
// const handleArticleIdClick = (articleId: string) => {
|
||||||
setEditingArticleId(articleId);
|
// setEditingArticleId(articleId);
|
||||||
setSelectedArticleId(articleId);
|
// setSelectedArticleId(articleId);
|
||||||
|
// };
|
||||||
|
|
||||||
|
const handleArticleIdClick = async (id: string) => {
|
||||||
|
// Fetch article details by ID
|
||||||
|
const res = await getDetailArticle(id);
|
||||||
|
const articleData = res?.data?.data;
|
||||||
|
|
||||||
|
const cleanArticleBody = articleData?.articleBody?.replace(
|
||||||
|
/<img[^>]*>/g,
|
||||||
|
""
|
||||||
|
);
|
||||||
|
const articleImagesData = articleData?.imagesUrl?.split(",");
|
||||||
|
|
||||||
|
// Update state with new article data
|
||||||
|
setArticleBody(cleanArticleBody || "");
|
||||||
|
setDetailData(articleData);
|
||||||
|
setSelectedArticleId(id);
|
||||||
|
setArticleImages(articleImagesData || []);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleEditClick = () => {
|
const handleEditClick = () => {
|
||||||
|
|
@ -591,7 +612,7 @@ export default function FormImageAI() {
|
||||||
|
|
||||||
{isGeneratedArticle && (
|
{isGeneratedArticle && (
|
||||||
<div className="mt-3 pb-0">
|
<div className="mt-3 pb-0">
|
||||||
{articleIds.map((id: any, index: any) => (
|
{articleIds.map((id: string, index: number) => (
|
||||||
<Button
|
<Button
|
||||||
key={index}
|
key={index}
|
||||||
className={`btn m-1 ${
|
className={`btn m-1 ${
|
||||||
|
|
@ -644,7 +665,7 @@ export default function FormImageAI() {
|
||||||
render={({ field: { onChange, value } }) => (
|
render={({ field: { onChange, value } }) => (
|
||||||
<JoditEditor
|
<JoditEditor
|
||||||
ref={editor}
|
ref={editor}
|
||||||
value={value || articleBody} // Show the selected article body in the editor
|
value={articleBody || value} // Ensure the JoditEditor receives the correct article body
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
className="dark:text-black"
|
className="dark:text-black"
|
||||||
/>
|
/>
|
||||||
|
|
@ -656,29 +677,6 @@ export default function FormImageAI() {
|
||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* {isGeneratedArticle && articleIds.length > 0 && (
|
|
||||||
<div className="my-4">
|
|
||||||
<h3>Generated Article IDs:</h3>
|
|
||||||
{articleIds.map((id: any, index: any) => (
|
|
||||||
<span
|
|
||||||
key={index}
|
|
||||||
className="badge badge-pill bg-primary text-white cursor-pointer mx-2"
|
|
||||||
onClick={() => handleArticleIdClick(id)}
|
|
||||||
>
|
|
||||||
{id}
|
|
||||||
</span>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
)} */}
|
|
||||||
|
|
||||||
{/* {editingArticleId && (
|
|
||||||
<div className="my-4">
|
|
||||||
<Button color="secondary" onClick={handleEditClick}>
|
|
||||||
Edit Article
|
|
||||||
</Button>
|
|
||||||
</div>
|
|
||||||
)} */}
|
|
||||||
</div>
|
</div>
|
||||||
<div className="py-3">
|
<div className="py-3">
|
||||||
<Label>Attachment</Label>
|
<Label>Attachment</Label>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue