diff --git a/components/form/article/create-article-form.tsx b/components/form/article/create-article-form.tsx
index e7a4270..4ef5c90 100644
--- a/components/form/article/create-article-form.tsx
+++ b/components/form/article/create-article-form.tsx
@@ -82,6 +82,9 @@ const createArticleSchema = z.object({
title: z.string().min(2, {
message: "Judul harus diisi",
}),
+ customCreatorName: z.string().min(2, {
+ message: "Judul harus diisi",
+ }),
slug: z.string().min(2, {
message: "Slug harus diisi",
}),
@@ -94,6 +97,7 @@ const createArticleSchema = z.object({
tags: z.array(z.string()).nonempty({
message: "Minimal 1 tag",
}),
+ source: z.enum(["internal", "external"]).optional(),
});
export default function CreateArticleForm() {
@@ -225,6 +229,8 @@ export default function CreateArticleForm() {
const request = {
id: diseData?.id,
title: values.title,
+ customCreatorName: values.customCreatorName,
+ source: values.source,
articleBody: removeImgTags(values.description),
metaDescription: diseData?.metaDescription,
metaTitle: diseData?.metaTitle,
@@ -280,6 +286,8 @@ export default function CreateArticleForm() {
title: values.title,
typeId: 1,
slug: values.slug,
+ customCreatorName: values.customCreatorName,
+ source: values.source,
categoryIds: values.category.map((a) => a.id).join(","),
tags: values.tags.join(","),
description: htmlToString(removeImgTags(values.description)),
@@ -659,7 +667,38 @@ export default function CreateArticleForm() {
)}
>
)}
-
+
Kreator
+
(
+
+ )}
+ />
+
+
Tipe Kreator
+
(
+
+ )}
+ />
+
Kategori
{
@@ -81,6 +88,9 @@ const createArticleSchema = z.object({
title: z.string().min(2, {
message: "Judul harus diisi",
}),
+ customCreatorName: z.string().min(2, {
+ message: "Judul harus diisi",
+ }),
slug: z.string().min(2, {
message: "Slug harus diisi",
}),
@@ -92,7 +102,8 @@ const createArticleSchema = z.object({
}),
tags: z.array(z.string()).nonempty({
message: "Minimal 1 tag",
- }), // Array berisi string
+ }),
+ source: z.enum(["internal", "external"]).optional(),
});
interface DiseData {
@@ -179,7 +190,9 @@ export default function EditArticleForm(props: { isDetail: boolean }) {
const data = res.data?.data;
setDetailData(data);
setValue("title", data?.title);
+ setValue("customCreatorName", data?.customCreatorName);
setValue("slug", data?.slug);
+ setValue("source", data?.source);
setValue("description", data?.htmlDescription);
setValue("tags", data?.tags ? data.tags.split(",") : []);
setThumbnail(data?.thumbnailUrl);
@@ -783,6 +796,43 @@ export default function EditArticleForm(props: { isDetail: boolean }) {
)}
>
)}
+ Kreator
+ (
+
+ )}
+ />
+
+
Tipe Kreator
+
(
+
+ )}
+ />
+
Kategori
void;
}) {
- const [selectedWritingSyle, setSelectedWritingStyle] =
- useState("Informational");
- const [selectedArticleSize, setSelectedArticleSize] = useState("News");
- const [selectedLanguage, setSelectedLanguage] = useState("id");
+ const [selectedWritingSyle, setSelectedWritingStyle] = useState("");
+ const [selectedArticleSize, setSelectedArticleSize] = useState("");
+ const [selectedLanguage, setSelectedLanguage] = useState("");
const [mainKeyword, setMainKeyword] = useState("");
const [title, setTitle] = useState("");
const [additionalKeyword, setAdditionalKeyword] = useState("");
@@ -271,11 +270,11 @@ export default function GenerateSingleArticleForm(props: {
}}
>
-
+
{articleSize.map((style) => (
-
+
{style.name}
))}
@@ -307,7 +306,7 @@ export default function GenerateSingleArticleForm(props: {
}}
>
-
+
Indonesia
diff --git a/components/main/dashboard/dashboard-container.tsx b/components/main/dashboard/dashboard-container.tsx
index 090c006..2f0907a 100644
--- a/components/main/dashboard/dashboard-container.tsx
+++ b/components/main/dashboard/dashboard-container.tsx
@@ -10,6 +10,12 @@ import {
import Cookies from "js-cookie";
import Link from "next/link";
import { useEffect, useState } from "react";
+import { Article } from "@/types/globals";
+import {
+ Popover,
+ PopoverContent,
+ PopoverTrigger,
+} from "@/components/ui/popover";
import {
getListArticle,
getStatisticSummary,
@@ -23,12 +29,14 @@ import {
convertDateFormatNoTime,
textEllipsis,
} from "@/utils/global";
+import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import { Checkbox } from "@/components/ui/checkbox";
+import { Label } from "@/components/ui/label";
+import { Calendar } from "@/components/ui/calendar";
import ApexChartColumn from "@/components/main/dashboard/chart/column-chart";
import CustomPagination from "@/components/layout/custom-pagination";
import { motion } from "framer-motion";
-import { Article } from "@/types/globals";
type ArticleData = Article & {
no: number;
@@ -98,7 +106,7 @@ export default function DashboardContainer() {
async function initState() {
const req = {
- limit: "4",
+ limit: "5",
page: page,
search: "",
};
@@ -349,11 +357,11 @@ export default function DashboardContainer() {
Recent Articles
-
+ {/*
-
+ */}
diff --git a/service/article.ts b/service/article.ts
index 5a4c803..5682e6f 100644
--- a/service/article.ts
+++ b/service/article.ts
@@ -21,13 +21,14 @@ export async function getListArticle(props: PaginationRequest) {
categorySlug,
isBanner,
} = props;
+
return await httpGet(
`/articles?limit=${limit}&page=${page}&isPublish=${
isPublish === undefined ? "" : isPublish
}&title=${search}&startDate=${startDate || ""}&endDate=${
endDate || ""
}&categoryId=${category || ""}&sortBy=${sortBy || "created_at"}&sort=${
- sort || "asc"
+ sort || "desc"
}&category=${categorySlug || ""}&isBanner=${isBanner || ""}`,
null
);
diff --git a/utils/global.tsx b/utils/global.tsx
index 527b80d..68830b0 100644
--- a/utils/global.tsx
+++ b/utils/global.tsx
@@ -164,3 +164,11 @@ export function convertDateFormatNoTime(date: Date): string {
const day = `${date.getDate()}`.padStart(2, "0");
return `${year}-${month}-${day}`;
}
+
+export function formatDate(date: Date | null) {
+ if (!date) return "";
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, "0");
+ const day = String(date.getDate()).padStart(2, "0");
+ return `${year}-${month}-${day}`;
+}