This commit is contained in:
Sabda Yagra 2025-07-04 12:32:55 +07:00
parent 19f1a59feb
commit 2bf469b721
7 changed files with 140 additions and 50 deletions

View File

@ -15,6 +15,8 @@ import { format } from "date-fns";
import { Link, useRouter } from "@/i18n/routing"; import { Link, useRouter } from "@/i18n/routing";
const columns: ColumnDef<any>[] = [ const columns: ColumnDef<any>[] = [
{ {
accessorKey: "no", accessorKey: "no",
header: "Nos", header: "Nos",
@ -62,11 +64,11 @@ const columns: ColumnDef<any>[] = [
accessorKey: "isActive", accessorKey: "isActive",
header: "Status", header: "Status",
cell: ({ row }) => { cell: ({ row }) => {
const isActive = row.getValue("isActive") as boolean; // Ambil nilai isActive const isActive = row.getValue("isActive") as boolean;
const status = isActive ? "Open" : "Closed"; // Tentukan teks berdasarkan isActive const status = isActive ? "Open" : "Closed";
const statusStyles = isActive const statusStyles = isActive
? "bg-green-100 text-green-600" // Gaya untuk "Open" ? "bg-green-100 text-green-600"
: "bg-red-100 text-red-600"; // Gaya untuk "Closed" : "bg-red-100 text-red-600";
return ( return (
<Badge className={`rounded-full px-5 ${statusStyles}`}>{status}</Badge> <Badge className={`rounded-full px-5 ${statusStyles}`}>{status}</Badge>

View File

@ -129,7 +129,7 @@ export default function UsersCard(props: { team: any; fetchData: () => void }) {
{props?.team?.length} {props?.team?.length}
</p> </p>
</div> </div>
<a onClick={() => setOpenSearch(!openSearch)}> <a onClick={() => setOpenSearch(!openSearch)} className="cursor-pointer">
<Icon icon="material-symbols:search" width={24} /> <Icon icon="material-symbols:search" width={24} />
</a> </a>
</div> </div>
@ -141,6 +141,7 @@ export default function UsersCard(props: { team: any; fetchData: () => void }) {
value={selectedUsers} value={selectedUsers}
onChange={(selected) => setSelectedUsers(selected as UserOption[])} onChange={(selected) => setSelectedUsers(selected as UserOption[])}
placeholder="Select users" placeholder="Select users"
className="cursor-pointer"
/> />
{selectedUsers?.length > 0 && ( {selectedUsers?.length > 0 && (

View File

@ -549,7 +549,7 @@ const FilterPage = () => {
onChange={(update) => { onChange={(update) => {
setDateRange(update); setDateRange(update);
}} }}
placeholderText={t("searchDate")} placeholderText={t("selectDate")}
onCalendarClose={() => setCalenderState(!calenderState)} onCalendarClose={() => setCalenderState(!calenderState)}
/> />
<div className="flex items-center"> <div className="flex items-center">

View File

@ -498,11 +498,11 @@ const Schedule = (props: any) => {
return ( return (
<div className="text-left"> <div className="text-left">
<p> <p>
<b>{`${itemFound?.length} Jadwal Bersamaan`}</b> <b>{t(`${itemFound?.length}simultaneousSchedule`)}</b>
</p> </p>
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger className="font-bold text-blue-300"> <DropdownMenuTrigger className="font-bold text-blue-300">
Lihat Jadwal {t("viewSchedule")}
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent> <DropdownMenuContent>
{itemFound?.map((list: any) => ( {itemFound?.map((list: any) => (
@ -653,7 +653,7 @@ const Schedule = (props: any) => {
<div className="container-fluid relative"> <div className="container-fluid relative">
<div className="grid grid-cols-1 mt-8"> <div className="grid grid-cols-1 mt-8">
<div className="relative block bg-white w-full dark:bg-slate-900 mx-auto"> <div className="relative block bg-white w-full dark:bg-slate-900 mx-auto">
<table className="w-full text-sm text-start"> <table className="w-full text-sm text-start table-fixed">
<thead className="text-md"> <thead className="text-md">
<tr className="h-full"> <tr className="h-full">
<th className="text-center border border-gray-100 dark:border-gray-700 py-6 min-w-[210px]"> <th className="text-center border border-gray-100 dark:border-gray-700 py-6 min-w-[210px]">
@ -783,7 +783,7 @@ const Schedule = (props: any) => {
</svg> </svg>
</a> */} </a> */}
</th> </th>
<th className="text-center border-l-0 border border-gray-100 dark:border-gray-700 py-6 w-[20px]"> <th className="text-center border-l-0 border border-gray-100 dark:border-gray-700 pr-12 w-[20px]">
<a <a
onClick={() => changeNextWeek()} onClick={() => changeNextWeek()}
className="cursor-pointer" className="cursor-pointer"
@ -925,7 +925,7 @@ const Schedule = (props: any) => {
{list?.startTime} - {list?.endTime} WIB {list?.startTime} - {list?.endTime} WIB
</p> </p>
<p className="flex flex-row items-start gap-2 "> <p className="flex flex-row items-start gap-2 ">
<Icon icon="bxs:map" width={40} /> <Icon icon="bxs:map" />
{list?.address} {list?.address}
</p> </p>
<p>{t("speaker")}</p> <p>{t("speaker")}</p>
@ -955,7 +955,7 @@ const Schedule = (props: any) => {
{list?.startTime} - {list?.endTime} WIB {list?.startTime} - {list?.endTime} WIB
</p> </p>
<p className="flex flex-row items-start gap-2 "> <p className="flex flex-row items-start gap-2 ">
<Icon icon="bxs:map" width={40} /> <Icon icon="bxs:map" />
{list?.address} {list?.address}
</p> </p>
<p>{t("speaker")}</p> <p>{t("speaker")}</p>
@ -985,7 +985,7 @@ const Schedule = (props: any) => {
{list?.startTime} - {list?.endTime} WIB {list?.startTime} - {list?.endTime} WIB
</p> </p>
<p className="flex flex-row items-start gap-2 "> <p className="flex flex-row items-start gap-2 ">
<Icon icon="bxs:map" width={40} /> <Icon icon="bxs:map" />
{list?.address} {list?.address}
</p> </p>
<p>{t("speaker")}</p> <p>{t("speaker")}</p>
@ -1073,7 +1073,7 @@ const Schedule = (props: any) => {
<AlertDialogHeader> <AlertDialogHeader>
<AlertDialogTitle> <AlertDialogTitle>
<h1 className="my-4 font-light"> <h1 className="my-4 font-light">
JADWAL /{" "} {t("timeTable1")}
{detail?.isYoutube == true ? "LIVE STREAMING" : "DETAIL"} {detail?.isYoutube == true ? "LIVE STREAMING" : "DETAIL"}
</h1> </h1>
<p className="font-bold">{detail?.title}</p> <p className="font-bold">{detail?.title}</p>

View File

@ -57,41 +57,48 @@ const UserSurveyBox = () => {
}); });
const options = { const options = {
accessFrequency: [ accessFrequency: [t("everyDay"), t("week"), t("month"), t("firstTime")],
"Setiap hari", uiExperienceDesign: [
"Beberapa kali seminggu", t("veryGood"),
"Beberapa kali dalam sebulan", t("good"),
"Baru pertama kali", t("enough"),
t("notEnough"),
t("bad"),
], ],
uiExperienceDesign: ["Sangat baik", "Baik", "Cukup", "Kurang", "Buruk"],
uiExperienceNavigation: [ uiExperienceNavigation: [
"Sangat mudah", t("veryEasy"),
"Mudah", t("easy"),
"Cukup", t("enough"),
"Sulit", t("difficult"),
"Sangat sulit", t("veryDifficult"),
], ],
uiExperienceSpeed: [ uiExperienceSpeed: [
"Sangat cepat", t("veryFast"),
"Cepat", t("fast"),
"Cukup", t("enough"),
"Lambat", t("slow"),
"Sangat lambat", t("verySlow"),
],
infoAccuracy: [
t("verySatisfied"),
t("satisfied"),
t("enough"),
t("lessSatisfied"),
t("notSatisfied"),
], ],
infoAccuracy: ["Sangat puas", "Puas", "Cukup", "Kurang puas", "Tidak puas"],
infoCompleteness: [ infoCompleteness: [
"Sangat lengkap", t("veryComplete"),
"Lengkap", t("completely"),
"Cukup", t("enough"),
"Kurang lengkap", t("incomplete"),
"Tidak lengkap", t("notComplete"),
], ],
usefulness: [ usefulness: [
"Sangat membantu", t("veryHelpful"),
"Membantu", t("helping"),
"Cukup membantu", t("quiteHelpful"),
"Kurang membantu", t("lessHelpful"),
"Tidak membantu", t("notHelpful"),
], ],
}; };
@ -201,17 +208,17 @@ const UserSurveyBox = () => {
<div className="space-y-3 mt-2"> <div className="space-y-3 mt-2">
{renderControllerGroup( {renderControllerGroup(
"uiExperienceDesign", "uiExperienceDesign",
"a) Tampilan dan desain website", t("websiteDesign"),
options.uiExperienceDesign options.uiExperienceDesign
)} )}
{renderControllerGroup( {renderControllerGroup(
"uiExperienceNavigation", "uiExperienceNavigation",
"b) Kemudahan navigasi", t("easeNavigation"),
options.uiExperienceNavigation options.uiExperienceNavigation
)} )}
{renderControllerGroup( {renderControllerGroup(
"uiExperienceSpeed", "uiExperienceSpeed",
"c) Kecepatan akses website", t("speed"),
options.uiExperienceSpeed options.uiExperienceSpeed
)} )}
</div> </div>
@ -222,12 +229,12 @@ const UserSurveyBox = () => {
<div className="space-y-3 mt-2"> <div className="space-y-3 mt-2">
{renderControllerGroup( {renderControllerGroup(
"infoAccuracy", "infoAccuracy",
"a) Akurat dan terpercaya", t("accurate"),
options.infoAccuracy options.infoAccuracy
)} )}
{renderControllerGroup( {renderControllerGroup(
"infoCompleteness", "infoCompleteness",
"b) Kelengkapan berita dan informasi", t("complete"),
options.infoCompleteness options.infoCompleteness
)} )}
</div> </div>
@ -246,7 +253,7 @@ const UserSurveyBox = () => {
control={control} control={control}
render={({ field }) => ( render={({ field }) => (
<Textarea <Textarea
placeholder="Tulis pesan Anda..." placeholder={t("write")}
value={field.value} value={field.value}
onChange={field.onChange} onChange={field.onChange}
/> />
@ -259,7 +266,7 @@ const UserSurveyBox = () => {
{t("cancel")} {t("cancel")}
</Button> </Button>
<Button type="submit" disabled={isLoading}> <Button type="submit" disabled={isLoading}>
{isLoading ? "Mengirim..." : "Kirim"} {isLoading ? t("sending") : t("send")}
</Button> </Button>
</div> </div>
</form> </form>

View File

@ -596,7 +596,47 @@
"survey7": "2. How was your experience in accessing this website?", "survey7": "2. How was your experience in accessing this website?",
"survey8": "3. How satisfied are you with the information available on the Polri MediaHub?", "survey8": "3. How satisfied are you with the information available on the Polri MediaHub?",
"survey9": "4. Do you feel this website is helpful in getting information related to the Police?", "survey9": "4. Do you feel this website is helpful in getting information related to the Police?",
"survey10": "5. What are your suggestions or input?" "survey10": "5. What are your suggestions or input?",
"everyDay": "Every Day",
"week": "Several times a week",
"month": "Several times a month",
"firstTime": "First time",
"veryGood": "Very Good",
"good": "Good",
"enough": "Enough",
"notEnough": "Not Enough",
"bad": "Bad",
"websiteDesign": "a) Website appearance and design",
"easeNavigation": "b) Ease of navigation",
"accurate": "a) Accurate and reliable",
"complete": "b) Completeness of news and information",
"write": "Write your message...",
"speed": "c) Website access speed",
"veryEasy": "Very Easy",
"easy": "Easy",
"difficult": "Difficult",
"veryDifficult": "Very Difficult",
"veryFast": "Very Fast",
"fast": "Fast",
"slow": "Slow",
"verySlow": "Very Slow",
"verySatisfied": "Very Satisfied",
"satisfied": "Satisfied",
"lessSatisfied": "Less Satisfied",
"notSatisfied": "Not Satisfied",
"veryComplete": "Very Complete",
"completely": "Complete",
"incomplete": "Incomplete",
"notComplete": "Not Complete",
"veryHelpful": "Very Helpful",
"helping": "Helpful",
"quiteHelpful": "Quite Helpful",
"lessHelpful": "Less Helpful",
"notHelpful": "Not helpful",
"sending": "Sending...",
"simultaneousSchedule": "Simultaneous Schedule",
"viewSchedule": "View Schedule",
"timeTable1": "TIMETABLE /"
}, },
"FilterPage": { "FilterPage": {
"image": "Image", "image": "Image",

View File

@ -597,7 +597,47 @@
"survey7": "2. Bagaimana pengalaman Anda dalam mengakses website ini?", "survey7": "2. Bagaimana pengalaman Anda dalam mengakses website ini?",
"survey8": "3. Seberapa puas Anda dengan informasi yang tersedia di MediaHub Polri?", "survey8": "3. Seberapa puas Anda dengan informasi yang tersedia di MediaHub Polri?",
"survey9": "4. Apakah Anda merasa website ini membantu dalam mendapatkan informasi terkait Polri?", "survey9": "4. Apakah Anda merasa website ini membantu dalam mendapatkan informasi terkait Polri?",
"survey10": "5. Apa saran atau masukan Anda?" "survey10": "5. Apa saran atau masukan Anda?",
"everyDay": "Setiap Hari",
"week": "Beberapa kali seminggu",
"month": "Beberapa kali dalam sebulan",
"firstTime": "Pertama kali",
"veryGood": "Sangat Baik",
"good": "Baik",
"enough": "Cukup",
"notEnough": "Kurang",
"bad": "Buruk",
"websiteDesign": "a) Tampilan dan desain website",
"easeNavigation": "b) Kemudahan navigasi",
"accurate": "a) Akurat dan terpercaya",
"complete": "b) Kelengkapan berita dan informasi",
"write": "Tulis pesan Anda...",
"speed": "c) Kecepatan akses website",
"veryEasy": "Sangat Mudah",
"easy": "Mudah",
"difficult": "Sulit",
"veryDifficult": "Sangat Sulit",
"veryFast": "Sangat Cepat",
"fast": "Cepat",
"slow": "Lambat",
"verySlow": "Sangat Lambat",
"verySatisfied": "Sangat Puas",
"satisfied": "Puas",
"lessSatisfied": "Kurang Puas",
"notSatisfied": "Tidak Puas",
"veryComplete": "Sangat Lengkap",
"completely": "Lengkap",
"incomplete": "Kurang lengkap",
"notComplete": "Tidak lengkap",
"veryHelpful": "Sangat Membantu",
"helping": "Membantu",
"quiteHelpful": "Cukup Membantu",
"lessHelpful": "Kurang Membantu",
"notHelpful": "Tidak Membantu",
"sending": "Mengirim...",
"simultaneousSchedule": "Jadwal Bersamaan",
"viewSchedule": "Lihat Jadwal",
"timeTable1": "JADWAL /"
}, },
"FilterPage": { "FilterPage": {
"image": "Foto", "image": "Foto",