diff --git a/app/(admin)/admin/master-user-level/page.tsx b/app/(admin)/admin/master-user-level/page.tsx
index 864f469..ca7304b 100644
--- a/app/(admin)/admin/master-user-level/page.tsx
+++ b/app/(admin)/admin/master-user-level/page.tsx
@@ -1,12 +1,34 @@
+import { AddIcon } from "@/components/icons";
import MappingUserLevel from "@/components/table/master/master-user-level/mapping-user-level";
import MasterUserLevelTable from "@/components/table/master/master-user-level/master-user-level-table";
+import { Button } from "@heroui/button";
+import Link from "next/link";
import React from "react";
const AdminMasterUserLevel = () => {
return (
- //
-
-
+ //
+ //
+ //
+ //
+ //
+ //
+
+
+
+
+
+
+
+
+
);
};
diff --git a/app/(admin)/admin/user-level/create/page.tsx b/app/(admin)/admin/user-level/create/page.tsx
new file mode 100644
index 0000000..f9565ff
--- /dev/null
+++ b/app/(admin)/admin/user-level/create/page.tsx
@@ -0,0 +1,12 @@
+import CreateMasterUserLevelForm from "@/components/form/master/master-user-level/master-user-level-form";
+import React from "react";
+
+const AdminMasterUserLevelCreate = () => {
+ return (
+
+
+
+ );
+};
+
+export default AdminMasterUserLevelCreate;
diff --git a/app/(admin)/admin/user-level/edit/[id]/page.tsx b/app/(admin)/admin/user-level/edit/[id]/page.tsx
new file mode 100644
index 0000000..8bd1b3b
--- /dev/null
+++ b/app/(admin)/admin/user-level/edit/[id]/page.tsx
@@ -0,0 +1,8 @@
+import EditUserLevelForm from "@/components/form/master/master-user-level/edit-user-level-form";
+import React from "react";
+
+const AdminMasterUserLevelCreate = () => {
+ return
;
+};
+
+export default AdminMasterUserLevelCreate;
diff --git a/app/(admin)/admin/user-level/page.tsx b/app/(admin)/admin/user-level/page.tsx
new file mode 100644
index 0000000..279b218
--- /dev/null
+++ b/app/(admin)/admin/user-level/page.tsx
@@ -0,0 +1,36 @@
+import { AddIcon } from "@/components/icons";
+import MappingUserLevel from "@/components/table/master/master-user-level/mapping-user-level";
+import MasterUserLevelTable from "@/components/table/master/master-user-level/master-user-level-table";
+import { Button } from "@heroui/button";
+import Link from "next/link";
+import React from "react";
+
+const AdminMasterUserLevel = () => {
+ return (
+ //
+ //
+ //
+ //
+ //
+ //
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default AdminMasterUserLevel;
diff --git a/components/form/article/create-article-form.tsx b/components/form/article/create-article-form.tsx
index 268f1b1..0aa48cd 100644
--- a/components/form/article/create-article-form.tsx
+++ b/components/form/article/create-article-form.tsx
@@ -29,6 +29,7 @@ import {
import ReactSelect from "react-select";
import makeAnimated from "react-select/animated";
import {
+ Calendar,
Checkbox,
Chip,
Modal,
@@ -36,13 +37,16 @@ import {
ModalContent,
ModalFooter,
ModalHeader,
+ Popover,
+ PopoverContent,
+ PopoverTrigger,
Select,
SelectItem,
SelectSection,
useDisclosure,
} from "@heroui/react";
import GenerateSingleArticleForm from "./generate-ai-single-form";
-import { htmlToString } from "@/utils/global";
+import { convertDateFormatNoTime, htmlToString } from "@/utils/global";
import { close, error, loading } from "@/config/swal";
import { useRouter } from "next/navigation";
import Link from "next/link";
@@ -130,10 +134,7 @@ export default function CreateArticleForm() {
const [isScheduled, setIsScheduled] = useState(false);
const [timeValue, setTimeValue] = useState("");
- const [startDateValue, setStartDateValue] = useState({
- startDate: null,
- endDate: null,
- });
+ const [startDateValue, setStartDateValue] = useState
(null);
const { getRootProps, getInputProps } = useDropzone({
onDrop: (acceptedFiles) => {
@@ -766,15 +767,15 @@ export default function CreateArticleForm() {
{errors?.tags && (
{errors.tags?.message}
)}
- {/*
+
- Publish dengan Jadwal
+ Publish dengan Jadwal
{isScheduled && (
Tanggal
-
setStartDateValue(e)}
inputClassName="z-50 w-full text-xs lg:text-sm bg-white dark bg-black border-1 border-gray-200 px-2 py-[6px] rounded-sm lg:rounded-lg h-[30px] lg:h-[40px] text-gray-600 dark:text-gray-300"
- />
+ /> */}
+
+
+
+
+
+
+
+
-
*/}
)}
-
*/}
+
@@ -813,7 +835,7 @@ export default function CreateArticleForm() {
color="primary"
type="submit"
isDisabled={
- (isScheduled && startDateValue.startDate == null) ||
+ (isScheduled && startDateValue == null) ||
(isScheduled && timeValue == "")
}
onClick={() =>
diff --git a/components/form/master/master-user-level/edit-user-level-form.tsx b/components/form/master/master-user-level/edit-user-level-form.tsx
new file mode 100644
index 0000000..8e80299
--- /dev/null
+++ b/components/form/master/master-user-level/edit-user-level-form.tsx
@@ -0,0 +1,358 @@
+"use client";
+import {
+ Button,
+ Input,
+ Radio,
+ RadioGroup,
+ Select,
+ SelectItem,
+ SelectSection,
+ Slider,
+ Switch,
+ Tab,
+ Table,
+ Tabs,
+ Textarea,
+ User,
+} from "@heroui/react";
+import React, {
+ useCallback,
+ useEffect,
+ useMemo,
+ useRef,
+ useState,
+} from "react";
+import { TimesIcon } from "@/components/icons";
+import Link from "next/link";
+import { useParams, useRouter } from "next/navigation";
+import { close, error, loading } from "@/config/swal";
+import Swal from "sweetalert2";
+import withReactContent from "sweetalert2-react-content";
+import dynamic from "next/dynamic";
+import { Controller, useForm } from "react-hook-form";
+import * as z from "zod";
+import { zodResolver } from "@hookform/resolvers/zod";
+import {
+ createUserLevels,
+ editUserLevels,
+ getAllUserLevels,
+ getUserLevels,
+} from "@/services/user-levels/user-levels-service";
+import ReactSelect from "react-select";
+import makeAnimated from "react-select/animated";
+
+const createArticleSchema = z.object({
+ name: z.string().min(2, {
+ message: "Required",
+ }),
+ aliasName: z.string().optional(),
+ group: z.string().min(2, {
+ message: "Required",
+ }),
+});
+
+const groups = [
+ { id: 1, name: "Mabes", value: "mabes", level: 1 },
+ { id: 2, name: "Polda", value: "polda", level: 2 },
+ { id: 3, name: "Satker", value: "satker", level: 2 },
+ { id: 4, name: "Polres", value: "polres", level: 3 },
+ { id: 5, name: "Subdiv", value: "subdiv", level: 3 },
+];
+
+export default function EditUserLevelForm() {
+ const router = useRouter();
+ const MySwal = withReactContent(Swal);
+ const animatedComponents = makeAnimated();
+ const [needApproval, setNeedApproval] = useState(false);
+ const [parentList, setParentList] = useState
([]);
+ const [selectedParent, setSelectedParent] = useState();
+ const params = useParams();
+ const id = params?.id;
+
+ const formOptions = {
+ resolver: zodResolver(createArticleSchema),
+ defaultValues: { name: "", group: "" },
+ };
+ type UserSettingSchema = z.infer;
+ const {
+ register,
+ control,
+ handleSubmit,
+ formState: { errors, isValid },
+ setValue,
+ getValues,
+ watch,
+ setError,
+ clearErrors,
+ } = useForm(formOptions);
+
+ const watchName = watch("name");
+ const generateSlug = (title: string) => {
+ return title
+ .toLowerCase()
+ .trim()
+ .replace(/[^\w\s-]/g, "")
+ .replace(/\s+/g, "-");
+ };
+
+ useEffect(() => {
+ setValue("aliasName", generateSlug(watchName));
+ }, [watchName]);
+
+ const findSelectedLevel = (group: string) => {
+ const selectedLevel = groups.find((a) => a.value === group);
+ return selectedLevel ? selectedLevel : null;
+ };
+
+ const save = async (data: any) => {
+ const findParent = (group: string) => {
+ if (group === "mabes") {
+ return 0;
+ } else if (group === "polda" || group === "satker") {
+ if (group === "polda") {
+ return 1;
+ } else {
+ return 555;
+ }
+ } else {
+ return selectedParent?.id;
+ }
+ };
+
+ const request = {
+ name: data.name,
+ aliasName: data.aliasName,
+ levelNumber: findSelectedLevel(data.group)?.level,
+ isActive: true,
+ group: data.group,
+ parentLevelId: findParent(data.group),
+ provinceId: 0,
+ isApprovalActive: needApproval,
+ };
+
+ loading();
+ const res = await editUserLevels(String(id), request);
+ if (res.error) {
+ error(res.message);
+ return false;
+ }
+ close();
+ successSubmit("/admin/user-level");
+ };
+
+ async function onSubmit(data: any) {
+ MySwal.fire({
+ title: "Save Data",
+ text: "",
+ icon: "warning",
+ showCancelButton: true,
+ cancelButtonColor: "#d33",
+ confirmButtonColor: "#3085d6",
+ confirmButtonText: "Save",
+ }).then((result) => {
+ if (result.isConfirmed) {
+ save(data);
+ }
+ });
+ }
+
+ function successSubmit(redirect: string) {
+ MySwal.fire({
+ title: "Sukses",
+ icon: "success",
+ confirmButtonColor: "#3085d6",
+ confirmButtonText: "OK",
+ }).then((result) => {
+ if (result.isConfirmed) {
+ router.push(redirect);
+ }
+ });
+ }
+
+ useEffect(() => {
+ fetchCategory();
+ }, []);
+
+ const fetchCategory = async () => {
+ loading();
+ const request = {
+ limit: 10,
+ };
+ const res = await getAllUserLevels(request);
+ close();
+ if (res?.data?.data) {
+ setupParent(res?.data?.data);
+ }
+ };
+
+ const setupParent = (data: any) => {
+ const temp = [];
+ for (const element of data) {
+ temp.push({
+ id: element.id,
+ label: element.name,
+ value: element.aliasName,
+ });
+ }
+ setParentList(temp);
+ };
+
+ const selectedGroup = watch("group");
+
+ useEffect(() => {
+ initFetch();
+ }, [parentList]);
+
+ const initFetch = async () => {
+ const res = await getUserLevels(String(id));
+ const data = res?.data?.data;
+ setValue("name", data?.name);
+ setValue("aliasName", data?.aliasName);
+ setValue("group", data?.group);
+ const parentId = parentList.find((a: any) => a.id === data?.parentLevelId);
+ setSelectedParent(parentId);
+ };
+
+ return (
+
+ );
+}
diff --git a/components/form/master/master-user-level/master-user-level-form.tsx b/components/form/master/master-user-level/master-user-level-form.tsx
index c20eb53..ed2bd9a 100644
--- a/components/form/master/master-user-level/master-user-level-form.tsx
+++ b/components/form/master/master-user-level/master-user-level-form.tsx
@@ -1,413 +1,339 @@
-'use client'
-import { Button } from "@heroui/button";
-import { Card, Checkbox, CheckboxGroup, Divider, Image, Input, Radio, RadioGroup, Select, SelectItem, SelectSection, Slider, Switch, Tab, Table, Tabs, Textarea, User } from "@heroui/react";
-import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
+"use client";
+import {
+ Button,
+ Input,
+ Radio,
+ RadioGroup,
+ Select,
+ SelectItem,
+ SelectSection,
+ Slider,
+ Switch,
+ Tab,
+ Table,
+ Tabs,
+ Textarea,
+ User,
+} from "@heroui/react";
+import React, {
+ useCallback,
+ useEffect,
+ useMemo,
+ useRef,
+ useState,
+} from "react";
import { TimesIcon } from "@/components/icons";
import Link from "next/link";
import { useRouter } from "next/navigation";
import { close, error, loading } from "@/config/swal";
-import Swal from 'sweetalert2';
-import withReactContent from 'sweetalert2-react-content';
-import dynamic from 'next/dynamic';
-import { useForm } from "react-hook-form";
+import Swal from "sweetalert2";
+import withReactContent from "sweetalert2-react-content";
+import dynamic from "next/dynamic";
+import { Controller, useForm } from "react-hook-form";
import * as z from "zod";
import { zodResolver } from "@hookform/resolvers/zod";
-import { createUserLevels } from "@/services/user-levels/user-levels-service";
+import {
+ createUserLevels,
+ getAllUserLevels,
+} from "@/services/user-levels/user-levels-service";
+import ReactSelect from "react-select";
+import makeAnimated from "react-select/animated";
-const LevelList = [
- { label: "Admin", value: "admin", id: 1 },
- { label: "Super-Admin", value: "super-admin", id: 2 },
- { label: "Kurator", value: "kurator", id: 3 },
- { label: "Supervisor", value: "supervisor", id: 4 },
-];
+const createArticleSchema = z.object({
+ name: z.string().min(2, {
+ message: "Required",
+ }),
+ aliasName: z.string().optional(),
+ group: z.string().min(2, {
+ message: "Required",
+ }),
+});
-const moduleList = [
- { label: "Article", value: "article", id: 1 },
- { label: "Caption", value: "caption", id: 2 },
- { label: "Meme", value: "meme", id: 3 },
- { label: "Video", value: "video", id: 4 },
- { label: "Master Data", value: "master-data", id: 5 },
-];
-
-const provinceList = [
- { label: "NTT", value: "1", id: 1 },
- { label: "NTB", value: "2", id: 2 },
- { label: "Aceh", value: "3", id: 3 },
- { label: "Jawa Timur", value: "4", id: 4 },
- { label: "Jawa Barat", value: "5", id: 5 },
+const groups = [
+ { id: 1, name: "Mabes", value: "mabes", level: 1 },
+ { id: 2, name: "Polda", value: "polda", level: 2 },
+ { id: 3, name: "Satker", value: "satker", level: 2 },
+ { id: 4, name: "Polres", value: "polres", level: 3 },
+ { id: 5, name: "Subdiv", value: "subdiv", level: 3 },
];
export default function CreateMasterUserLevelForm() {
- const router = useRouter();
- const JoditEditor = dynamic(() => import('jodit-react'), { ssr: false });
- const MySwal = withReactContent(Swal);
- const [isVisible, setIsVisible] = useState(false);
- const [tabs, setTabs] = useState("personal-info")
- const editor = useRef(null);
- const [content, setContent] = useState('');
- const [haveChildren, setHaveChildren] = useState("no");
- const [active, setTrue] = useState("true");
- const [levelValue, setLevelValue] = useState("");
- const handleTab = (tab: any) => {
- setTabs(tab);
- };
+ const router = useRouter();
+ const MySwal = withReactContent(Swal);
+ const animatedComponents = makeAnimated();
+ const [needApproval, setNeedApproval] = useState(false);
+ const [parentList, setParentList] = useState([]);
+ const [selectedParent, setSelectedParent] = useState();
- const handleActive = (e: React.ChangeEvent) => {
- setTrue(e.target.value);
- };
+ const formOptions = {
+ resolver: zodResolver(createArticleSchema),
+ defaultValues: { name: "", group: "" },
+ };
+ type UserSettingSchema = z.infer;
+ const {
+ register,
+ control,
+ handleSubmit,
+ formState: { errors, isValid },
+ setValue,
+ getValues,
+ watch,
+ setError,
+ clearErrors,
+ } = useForm(formOptions);
- const handleHaveChildren = (e: React.ChangeEvent) => {
- setHaveChildren(e.target.value);
- };
+ const watchName = watch("name");
+ const generateSlug = (title: string) => {
+ return title
+ .toLowerCase()
+ .trim()
+ .replace(/[^\w\s-]/g, "")
+ .replace(/\s+/g, "-");
+ };
- let [files, setFiles] = useState([]);
+ useEffect(() => {
+ setValue("aliasName", generateSlug(watchName));
+ }, [watchName]);
- const removeFile = (name: string) => {
- const arrayFile: File[] = [];
- for (const element of files) {
- if (element.name !== name) {
- arrayFile.push(element);
- }
+ const findSelectedLevel = (group: string) => {
+ const selectedLevel = groups.find((a) => a.value === group);
+ return selectedLevel ? selectedLevel : null;
+ };
+
+ const save = async (data: any) => {
+ const findParent = (group: string) => {
+ if (group === "mabes") {
+ return 0;
+ } else if (group === "polda" || group === "satker") {
+ if (group === "polda") {
+ return 1;
+ } else {
+ return 555;
}
- setFiles(arrayFile);
+ } else {
+ return selectedParent?.id;
+ }
};
- const handleFileChange = (event: any) => {
- const newFiles: FileList | null = event.target.files;
- if (newFiles) {
- const allowedExtensions = ['.doc', '.docx', '.pdf', '.ppt', '.pptx', '.xlsx', '.csv'];
- let temp: File[] = [...files]; // Salin file-file yang sudah ada
- for (let i = 0; i < newFiles.length; i++) {
- const file = newFiles[i];
- const fileExtension = file.name.split('.').pop()?.toLowerCase();
- if (fileExtension && allowedExtensions.includes(`.${fileExtension}`)) {
- temp.push(file);
- } else {
- alert('Format file tidak valid. Hanya file .doc, .docx, .ppt, .pptx, .xlsx, .csv atau .pdf yang diperbolehkan.');
- }
- }
- setFiles(temp);
- }
+ const request = {
+ name: data.name,
+ aliasName: data.aliasName,
+ levelNumber: findSelectedLevel(data.group)?.level,
+ isActive: true,
+ group: data.group,
+ parentLevelId: findParent(data.group),
+ provinceId: 0,
+ isApprovalActive: needApproval,
};
- const toggleVisibility = () => setIsVisible(!isVisible);
+ loading();
+ const res = await createUserLevels(request);
+ if (res.error) {
+ error(res.message);
+ return false;
+ }
+ close();
+ successSubmit("/admin/user-level");
+ };
- const validationSchema = z.object({
- name: z.string().min(1, { message: "Required" }),
- aliasName: z.string().min(1, { message: "Required" }),
- // levelNumber: z.string().min(1, { message: "Required" }),
+ async function onSubmit(data: any) {
+ MySwal.fire({
+ title: "Save Data",
+ text: "",
+ icon: "warning",
+ showCancelButton: true,
+ cancelButtonColor: "#d33",
+ confirmButtonColor: "#3085d6",
+ confirmButtonText: "Save",
+ }).then((result) => {
+ if (result.isConfirmed) {
+ save(data);
+ }
});
+ }
- const formOptions = { resolver: zodResolver(validationSchema) };
- type ArticleSchema = z.infer;
+ function successSubmit(redirect: string) {
+ MySwal.fire({
+ title: "Sukses",
+ icon: "success",
+ confirmButtonColor: "#3085d6",
+ confirmButtonText: "OK",
+ }).then((result) => {
+ if (result.isConfirmed) {
+ router.push(redirect);
+ }
+ });
+ }
- const { register, handleSubmit, formState: { errors }, formState, setValue } = useForm(formOptions);
+ useEffect(() => {
+ fetchCategory();
+ }, []);
- const save = async (data: any) => {
- const selectedLevel = Number(Array.from(levelValue).pop());
- const request = {
- name: data.name,
- aliasName: data.aliasName,
- levelNumber: selectedLevel,
- isActive: active,
- };
-
- console.log(request);
- loading();
- const res = await createUserLevels(request);
- if (res.error) {
- error(res.message);
- return false;
- }
- close();
- successSubmit("/admin/master/master-user-level")
+ const fetchCategory = async () => {
+ loading();
+ const request = {
+ limit: 10,
+ };
+ const res = await getAllUserLevels(request);
+ close();
+ if (res?.data?.data) {
+ setupParent(res?.data?.data);
}
+ };
- async function onSubmit(data: any) {
- MySwal.fire({
- title: "Save Data",
- text: "",
- icon: "warning",
- showCancelButton: true,
- cancelButtonColor: "#d33",
- confirmButtonColor: "#3085d6",
- confirmButtonText: "Save",
- }).then((result) => {
- if (result.isConfirmed) {
- save(data);
+ const setupParent = (data: any) => {
+ const temp = [];
+ for (const element of data) {
+ temp.push({
+ id: element.id,
+ label: element.name,
+ value: element.aliasName,
+ });
+ }
+ setParentList(temp);
+ };
+
+ const selectedGroup = watch("group");
+
+ return (
+
+
+
+ );
}
diff --git a/components/icons/sidebar-icon.tsx b/components/icons/sidebar-icon.tsx
index 3964323..ba9abd2 100644
--- a/components/icons/sidebar-icon.tsx
+++ b/components/icons/sidebar-icon.tsx
@@ -385,6 +385,26 @@ export const MasterRoleIcon = ({
/>
);
+export const MasterUserLevelIcon = ({
+ size,
+ height = 24,
+ width = 24,
+ fill = "currentColor",
+ ...props
+}: IconSvgProps) => (
+
+);
export const MasterCategoryIcon = ({
size,
height = 24,
diff --git a/components/layout/sidebar/sidebar-mobile.tsx b/components/layout/sidebar/sidebar-mobile.tsx
index 1814d63..6dc7601 100644
--- a/components/layout/sidebar/sidebar-mobile.tsx
+++ b/components/layout/sidebar/sidebar-mobile.tsx
@@ -20,6 +20,7 @@ import {
MagazineIcon,
MasterCategoryIcon,
MasterRoleIcon,
+ MasterUserLevelIcon,
MasterUsersIcon,
MinusCircleIcon,
StaticPageIcon,
@@ -243,6 +244,20 @@ const sideBarDummyData = [
statusName: "Active",
childModule: null,
},
+ {
+ id: 23,
+ name: "Master User Level",
+ moduleId: 656,
+ moduleName: "Form Validation",
+ modulePathUrl: "/admin/user-level",
+ parentId: -1,
+ icon: ,
+ position: 1,
+ statusId: 1,
+ childMenu: [],
+ statusName: "Active",
+ childModule: null,
+ },
];
const SidebarMobile: React.FC = ({ updateSidebarData }) => {
diff --git a/components/layout/sidebar/sidebar.tsx b/components/layout/sidebar/sidebar.tsx
index bb9e95e..39d2005 100644
--- a/components/layout/sidebar/sidebar.tsx
+++ b/components/layout/sidebar/sidebar.tsx
@@ -20,6 +20,7 @@ import {
MagazineIcon,
MasterCategoryIcon,
MasterRoleIcon,
+ MasterUserLevelIcon,
MasterUsersIcon,
MinusCircleIcon,
StaticPageIcon,
@@ -319,6 +320,20 @@ const sideBarDummyData = [
statusName: "Active",
childModule: null,
},
+ {
+ id: 23,
+ name: "Master User Level",
+ moduleId: 656,
+ moduleName: "Form Validation",
+ modulePathUrl: "/admin/user-level",
+ parentId: -1,
+ icon: ,
+ position: 1,
+ statusId: 1,
+ childMenu: [],
+ statusName: "Active",
+ childModule: null,
+ },
];
const Sidebar: React.FC = ({ updateSidebarData }) => {
diff --git a/components/table/master/master-user-level/master-user-level-table.tsx b/components/table/master/master-user-level/master-user-level-table.tsx
index 508d842..cceb9fc 100644
--- a/components/table/master/master-user-level/master-user-level-table.tsx
+++ b/components/table/master/master-user-level/master-user-level-table.tsx
@@ -30,6 +30,7 @@ import {
} from "@/components/icons";
import Link from "next/link";
import { getAllUserLevels } from "@/services/user-levels/user-levels-service";
+import { close, loading } from "@/config/swal";
type UserObject = {
id: number;
@@ -41,12 +42,6 @@ type UserObject = {
status: string;
};
-const statusColorMap = {
- active: "success",
- paused: "danger",
- vacation: "warning",
-};
-
export default function MasterUserLevelTable() {
const [totalPage, setTotalPage] = useState(1);
const [masterUserLevelTable, setmasterUserLevel] = useState([]);
@@ -56,11 +51,11 @@ export default function MasterUserLevelTable() {
const columns = [
{ name: "No", uid: "no" },
{ name: "Name", uid: "name" },
- { name: "User Name", uid: "alias_name" },
- { name: "Level Number", uid: "level_number" },
- { name: "Parent Level", uid: "parent_level_id" },
- { name: "Province", uid: "province_id" },
- { name: "Status", uid: "is_active" },
+ { name: "User Name", uid: "aliasName" },
+ { name: "Level Number", uid: "levelNumber" },
+ { name: "Parent", uid: "parentLevelId" },
+ // { name: "Province", uid: "province_id" },
+ // { name: "Status", uid: "is_active" },
{ name: "Action", uid: "actions" },
];
@@ -71,6 +66,7 @@ export default function MasterUserLevelTable() {
}, []);
async function fetchData() {
+ loading();
const request = {
page: page,
limit: 10,
@@ -78,10 +74,11 @@ export default function MasterUserLevelTable() {
const res = await getAllUserLevels(request);
const data = res?.data?.data;
setTotalPage(Math.ceil(res?.data?.total / 10));
- initUserData(10, data);
+ await initUserData(10, data);
+ close();
}
- function initUserData(limit: number, data?: any) {
+ async function initUserData(limit: number, data?: any) {
if (data) {
console.log(data);
const startIndex = limit * (page - 1);
@@ -91,43 +88,34 @@ export default function MasterUserLevelTable() {
value.no = startIndex + iterate;
return value;
});
- console.log("Data ::", newData);
setmasterUserLevel(newData);
}
}
+ const findParentName = (data: string | number) => {
+ let name = "-";
+
+ for (let i = 9; i < masterUserLevelTable?.length; i++) {
+ const temp = masterUserLevelTable[i];
+ if (temp.id === Number(data)) {
+ name = temp.name;
+ break;
+ }
+ }
+
+ return name;
+ };
+
const renderCell = useCallback(
(masterUserLevel: TableRow, columnKey: Key) => {
const cellValue = masterUserLevel[columnKey as keyof UserObject];
- const statusColorMap: Record = {
- active: "success",
- cancel: "danger",
- pending: "warning",
- };
switch (columnKey) {
case "no":
return {masterUserLevel.id}
;
- case "name":
- return {masterUserLevel.name}
;
-
- case "alias_Name":
- return {masterUserLevel.aliasName}
;
- case "is_active":
- return (
-
-
- {cellValue}
-
-
- );
-
+ case "parentLevelId":
+ return {findParentName(cellValue)}
;
case "actions":
return (
@@ -138,14 +126,14 @@ export default function MasterUserLevelTable() {
-
+ {/*
Detail
-
+ */}
-
+
Edit
@@ -169,18 +157,18 @@ export default function MasterUserLevelTable() {
return cellValue;
}
},
- []
+ [masterUserLevelTable]
);
return (
<>
-
+ {/*
-
+ */}