fix: project
Deskripsi: - update loading di semua modal konfirmasi disetiap fitur project - update order by name anggota saat tambah anggota project - update padding saat tidak ada tugas - menambahkan kode 500 di api agar mempermudah maintenance No Issuess
This commit is contained in:
@@ -16,6 +16,7 @@ export default function AddDetailTaskProject() {
|
||||
const router = useRouter()
|
||||
const [name, setName] = useState("")
|
||||
const [openModal, setOpenModal] = useState(false)
|
||||
const [loadingModal, setLoadingModal] = useState(false)
|
||||
const param = useParams<{ id: string }>()
|
||||
const tema = useHookstate(TEMA)
|
||||
const [touched, setTouched] = useState({
|
||||
@@ -38,6 +39,7 @@ export default function AddDetailTaskProject() {
|
||||
|
||||
async function onSubmit() {
|
||||
try {
|
||||
setLoadingModal(true)
|
||||
const res = await funCreateDetailProject(param.id, {
|
||||
name,
|
||||
dateStart: (value[0] != null) ? value[0] : new Date,
|
||||
@@ -50,7 +52,6 @@ export default function AddDetailTaskProject() {
|
||||
id: param.id,
|
||||
}])
|
||||
toast.success(res.message)
|
||||
setOpenModal(false)
|
||||
router.push(`/project/${param.id}`)
|
||||
} else {
|
||||
toast.error(res.message)
|
||||
@@ -58,6 +59,9 @@ export default function AddDetailTaskProject() {
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
toast.error("Gagal menambahkan tugas, coba lagi nanti")
|
||||
} finally {
|
||||
setOpenModal(false)
|
||||
setLoadingModal(false)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,13 +152,14 @@ export default function AddDetailTaskProject() {
|
||||
</Box>
|
||||
|
||||
|
||||
<LayoutModal opened={openModal} onClose={() => setOpenModal(false)}
|
||||
<LayoutModal loading={loadingModal} opened={openModal} onClose={() => setOpenModal(false)}
|
||||
description="Apakah Anda yakin ingin menambahkan tugas?"
|
||||
onYes={(val) => {
|
||||
if (val) {
|
||||
onSubmit()
|
||||
} else {
|
||||
setOpenModal(false)
|
||||
}
|
||||
setOpenModal(false)
|
||||
}} />
|
||||
</Box>
|
||||
);
|
||||
|
||||
@@ -18,6 +18,7 @@ import { useWibuRealtime } from "wibu-realtime";
|
||||
|
||||
export default function AddFileDetailProject() {
|
||||
const router = useRouter()
|
||||
const [loadingModal, setLoadingModal] = useState(false)
|
||||
const [openModal, setOpenModal] = useState(false)
|
||||
const [fileForm, setFileForm] = useState<any[]>([])
|
||||
const [listFile, setListFile] = useState<IListFileTaskProject[]>([])
|
||||
@@ -57,6 +58,7 @@ export default function AddFileDetailProject() {
|
||||
|
||||
async function onSubmit() {
|
||||
try {
|
||||
setLoadingModal(true)
|
||||
const fd = new FormData();
|
||||
for (let i = 0; i < fileForm.length; i++) {
|
||||
fd.append(`file${i}`, fileForm[i]);
|
||||
@@ -79,6 +81,9 @@ export default function AddFileDetailProject() {
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
toast.error("Gagal menambahkan file, coba lagi nanti");
|
||||
} finally {
|
||||
setOpenModal(false)
|
||||
setLoadingModal(false)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,13 +188,14 @@ export default function AddFileDetailProject() {
|
||||
</Stack>
|
||||
</LayoutDrawer>
|
||||
|
||||
<LayoutModal opened={openModal} onClose={() => setOpenModal(false)}
|
||||
<LayoutModal loading={loadingModal} opened={openModal} onClose={() => setOpenModal(false)}
|
||||
description="Apakah Anda yakin ingin menambahkan file?"
|
||||
onYes={(val) => {
|
||||
if (val) {
|
||||
onSubmit()
|
||||
} else {
|
||||
setOpenModal(false)
|
||||
}
|
||||
setOpenModal(false)
|
||||
}} />
|
||||
|
||||
</Box>
|
||||
|
||||
@@ -27,7 +27,8 @@ export default function AddMemberDetailProject() {
|
||||
const [onClickSearch, setOnClickSearch] = useState(false)
|
||||
const [searchQuery, setSearchQuery] = useState('')
|
||||
const tema = useHookstate(TEMA)
|
||||
const isMobile2 = useMediaQuery("(max-width: 438px)");
|
||||
const isMobile2 = useMediaQuery("(max-width: 438px)")
|
||||
const [loadingModal, setLoadingModal] = useState(false)
|
||||
const [dataRealTime, setDataRealtime] = useWibuRealtime({
|
||||
WIBU_REALTIME_TOKEN: keyWibu,
|
||||
project: "sdm"
|
||||
@@ -102,6 +103,7 @@ export default function AddMemberDetailProject() {
|
||||
|
||||
async function onSubmit() {
|
||||
try {
|
||||
setLoadingModal(true)
|
||||
const res = await funAddMemberProject(param.id, { member: selectedFiles });
|
||||
if (res.success) {
|
||||
setDataRealtime([{
|
||||
@@ -116,6 +118,9 @@ export default function AddMemberDetailProject() {
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
toast.error("Gagal menambahkan anggota, coba lagi nanti");
|
||||
} finally {
|
||||
setOpenModal(false)
|
||||
setLoadingModal(true)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -307,13 +312,14 @@ export default function AddMemberDetailProject() {
|
||||
}
|
||||
</Box>
|
||||
|
||||
<LayoutModal opened={openModal} onClose={() => setOpenModal(false)}
|
||||
<LayoutModal loading={loadingModal} opened={openModal} onClose={() => setOpenModal(false)}
|
||||
description="Apakah Anda yakin ingin menambahkan anggota?"
|
||||
onYes={(val) => {
|
||||
if (val) {
|
||||
onSubmit()
|
||||
} else {
|
||||
setOpenModal(false)
|
||||
}
|
||||
setOpenModal(false)
|
||||
}} />
|
||||
</Box>
|
||||
);
|
||||
|
||||
@@ -18,6 +18,7 @@ export default function ListAnggotaDetailProject() {
|
||||
const [isData, setData] = useState<IDataMemberProject[]>([])
|
||||
const param = useParams<{ id: string }>()
|
||||
const [loading, setLoading] = useState(true)
|
||||
const [loadingDelete, setLoadingDelete] = useState(false)
|
||||
const [openDrawer, setOpenDrawer] = useState(false)
|
||||
const [isOpenModal, setOpenModal] = useState(false)
|
||||
const [dataChoose, setDataChoose] = useState({ id: '', name: '' })
|
||||
@@ -76,6 +77,7 @@ export default function ListAnggotaDetailProject() {
|
||||
|
||||
async function onSubmit() {
|
||||
try {
|
||||
setLoadingDelete(true)
|
||||
const res = await funDeleteMemberProject(param.id, { idUser: dataChoose.id });
|
||||
if (res.success) {
|
||||
setDataRealtime([{
|
||||
@@ -92,6 +94,9 @@ export default function ListAnggotaDetailProject() {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
toast.error("Gagal menghapus anggota Kegiatan, coba lagi nanti");
|
||||
} finally {
|
||||
setOpenModal(false)
|
||||
setLoadingDelete(false)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,7 +134,7 @@ export default function ListAnggotaDetailProject() {
|
||||
</Box>
|
||||
))
|
||||
:
|
||||
isData.length === 0 ? <Text>Tidak ada anggota</Text> :
|
||||
isData.length === 0 ? <Text c={"dimmed"} ta={"center"}>Tidak ada anggota</Text> :
|
||||
isData.map((v, i) => {
|
||||
return (
|
||||
<Box key={i}>
|
||||
@@ -198,13 +203,14 @@ export default function ListAnggotaDetailProject() {
|
||||
</Box>
|
||||
</LayoutDrawer>
|
||||
|
||||
<LayoutModal opened={isOpenModal} onClose={() => setOpenModal(false)}
|
||||
<LayoutModal loading={loadingDelete} opened={isOpenModal} onClose={() => setOpenModal(false)}
|
||||
description="Apakah Anda yakin ingin mengeluarkan anggota?"
|
||||
onYes={(val) => {
|
||||
if (val) {
|
||||
onSubmit()
|
||||
} else {
|
||||
setOpenModal(false)
|
||||
}
|
||||
setOpenModal(false)
|
||||
}} />
|
||||
|
||||
</Box>
|
||||
|
||||
@@ -17,6 +17,7 @@ export default function ListFileDetailProject() {
|
||||
const [isData, setData] = useState<IDataFileProject[]>([])
|
||||
const param = useParams<{ id: string }>()
|
||||
const [loading, setLoading] = useState(true)
|
||||
const [loadingDelete, setLoadingDelete] = useState(false)
|
||||
const [idData, setIdData] = useState('')
|
||||
const [idStorage, setIdStorage] = useState('')
|
||||
const [nameData, setNameData] = useState('')
|
||||
@@ -76,6 +77,7 @@ export default function ListFileDetailProject() {
|
||||
|
||||
async function onDelete() {
|
||||
try {
|
||||
setLoadingDelete(true)
|
||||
const res = await funDeleteFileProject(idData);
|
||||
if (res.success) {
|
||||
setDataRealtime([{
|
||||
@@ -93,6 +95,9 @@ export default function ListFileDetailProject() {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
toast.error("Gagal menghapus file, coba lagi nanti");
|
||||
} finally {
|
||||
setOpenModal(false)
|
||||
setLoadingDelete(false)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -128,7 +133,7 @@ export default function ListFileDetailProject() {
|
||||
</Box>
|
||||
))
|
||||
:
|
||||
isData.length === 0 ? <Text>Tidak ada file</Text> :
|
||||
isData.length === 0 ? <Text c={"dimmed"} ta={"center"}>Tidak ada file</Text> :
|
||||
isData.map((item, index) => {
|
||||
return (
|
||||
<Box
|
||||
@@ -225,13 +230,14 @@ export default function ListFileDetailProject() {
|
||||
</LayoutDrawer>
|
||||
|
||||
|
||||
<LayoutModal opened={isOpenModal} onClose={() => setOpenModal(false)}
|
||||
<LayoutModal loading={loadingDelete} opened={isOpenModal} onClose={() => setOpenModal(false)}
|
||||
description="Apakah Anda yakin ingin menghapus file ini? File yang dihapus tidak dapat dikembalikan"
|
||||
onYes={(val) => {
|
||||
if (val) {
|
||||
onDelete()
|
||||
} else {
|
||||
setOpenModal(false)
|
||||
}
|
||||
setOpenModal(false)
|
||||
}} />
|
||||
|
||||
<LayoutModalViewFile opened={isOpenModalView} onClose={() => setOpenModalView(false)} file={idStorage} extension={isExtension} fitur='project' />
|
||||
|
||||
@@ -24,6 +24,7 @@ export default function ListTugasDetailProject() {
|
||||
const [statusData, setStatusData] = useState(0)
|
||||
const [openDrawerStatus, setOpenDrawerStatus] = useState(false)
|
||||
const [isOpenModal, setOpenModal] = useState(false)
|
||||
const [loadingDelete, setLoadingDelete] = useState(false)
|
||||
const router = useRouter()
|
||||
const tema = useHookstate(TEMA)
|
||||
const [reason, setReason] = useState("")
|
||||
@@ -75,6 +76,7 @@ export default function ListTugasDetailProject() {
|
||||
|
||||
async function onDelete() {
|
||||
try {
|
||||
setLoadingDelete(true)
|
||||
const res = await funDeleteDetailProject(idData, { idProject: param.id });
|
||||
if (res.success) {
|
||||
setDataRealtime([{
|
||||
@@ -92,6 +94,9 @@ export default function ListTugasDetailProject() {
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
toast.error("Gagal hapus tugas Kegiatan, coba lagi nanti");
|
||||
} finally {
|
||||
setOpenModal(false)
|
||||
setLoadingDelete(false)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,7 +143,6 @@ export default function ListTugasDetailProject() {
|
||||
style={{
|
||||
borderRadius: 10,
|
||||
border: `1px solid ${"#D6D8F6"}`,
|
||||
// padding: 10,
|
||||
}}
|
||||
pl={20}
|
||||
pr={20}
|
||||
@@ -149,7 +153,7 @@ export default function ListTugasDetailProject() {
|
||||
<SkeletonDetailListTugasTask />
|
||||
</Box>
|
||||
</> :
|
||||
isData.length === 0 ? <Text>Tidak ada tugas</Text> :
|
||||
isData.length === 0 ? <Text py={20} c={"dimmed"} ta={"center"}>Tidak ada tugas</Text> :
|
||||
isData.map((item, index) => {
|
||||
return (
|
||||
<Box key={index}>
|
||||
@@ -256,13 +260,14 @@ export default function ListTugasDetailProject() {
|
||||
</Box>
|
||||
</LayoutDrawer>
|
||||
|
||||
<LayoutModal opened={isOpenModal} onClose={() => setOpenModal(false)}
|
||||
description="Apakah Anda yakin ingin menghapus Tahapan Tugas ini?"
|
||||
<LayoutModal loading={loadingDelete} opened={isOpenModal} onClose={() => setOpenModal(false)}
|
||||
description="Apakah Anda yakin ingin menghapus tahapan tugas ini?"
|
||||
onYes={(val) => {
|
||||
if (val) {
|
||||
onDelete()
|
||||
} else {
|
||||
setOpenModal(false)
|
||||
}
|
||||
setOpenModal(false)
|
||||
}} />
|
||||
|
||||
<LayoutDrawer opened={openDrawerStatus} title={'Status'} onClose={() => setOpenDrawerStatus(false)}>
|
||||
|
||||
@@ -89,7 +89,7 @@ export default function ProgressDetailProject() {
|
||||
<>
|
||||
<Box mt={10}>
|
||||
{loading ? "" :
|
||||
reason !== null ?
|
||||
(reason !== null && reason != "") ?
|
||||
(
|
||||
<Box mb={10}>
|
||||
<Box p={15} bg={"#FFF2CD"} style={{
|
||||
|
||||
Reference in New Issue
Block a user