From ada8b954b6a797cad0683bbc79b81bb01e9a8e30 Mon Sep 17 00:00:00 2001 From: Michael Wiryadinata Halim <michael.wiryadinata@ui.ac.id> Date: Thu, 7 May 2020 23:54:40 +0700 Subject: [PATCH] Coldfix sprint 4 Fix UI --- .gitignore | 1 + src/__test__/DetailPengguna.test.js | 19 +++++++++ src/component/StatusDonasi.jsx | 33 +++++++++++++++ src/component/TableUtils.jsx | 3 +- src/page/donasi/DetailDonasi.jsx | 56 ++++++++++++++----------- src/page/pengguna/DetailPengguna.jsx | 58 ++++++++++++++++++++++++-- src/page/pengguna/ListPengguna.jsx | 4 +- src/page/transaksi/DetailTransaksi.jsx | 57 +++++++++++++------------ 8 files changed, 174 insertions(+), 57 deletions(-) create mode 100644 src/component/StatusDonasi.jsx diff --git a/.gitignore b/.gitignore index e49541d..bdafb28 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ npm-debug.log* yarn-debug.log* yarn-error.log* /.vscode +.parcel-cache \ No newline at end of file diff --git a/src/__test__/DetailPengguna.test.js b/src/__test__/DetailPengguna.test.js index fe6bae9..e2d3ab7 100644 --- a/src/__test__/DetailPengguna.test.js +++ b/src/__test__/DetailPengguna.test.js @@ -11,6 +11,25 @@ afterEach(cleanup); test("Test detail pengguna renders", async () => { fetch + .once({ + id: "8e9a8f94-cb5c-4b2d-b4f1-81ccfb9f1b0a", + donation_number: "7NGVBN", + user: "45897cc5-968c-44cf-931d-e646b095fcaf", + user_username: "admin-staging", + program: "6d7462da-6a85-4e2b-9930-69567090a5d5", + program_code: "3MXZ9T", + user_full_name: "Hello", + user_phone_number: "012345", + program_name: "dummy 2", + amount: "10000.00", + donation_status: "001", + readable_donation_status: "Menunggu konfirmasi admin", + proof_of_bank_transfer: "a", + user_bank_account_name: "Jeffrey", + user_bank_account_number: "12345678", + created_at: "2020-04-28T21:34:15.565614+07:00", + updated_at: "2020-04-28T21:34:15.565651+07:00", + }) .once( JSON.stringify({ count: 17, diff --git a/src/component/StatusDonasi.jsx b/src/component/StatusDonasi.jsx new file mode 100644 index 0000000..5cff3fb --- /dev/null +++ b/src/component/StatusDonasi.jsx @@ -0,0 +1,33 @@ +import React from "react"; +import { css } from "@emotion/core"; +const StatusDonasi = ({ status, label }) => { + let color; + switch (status) { + case "001": + color = "#EAC435"; + break; + case "002": + color = "#27496d"; + break; + case "003": + color = "#CA1551"; + break; + case "004": + color = "#FC766AFF"; + break; + default: + color = "black"; + break; + } + return ( + <div + css={css` + color: ${color}; + `} + > + {label} + </div> + ); +}; + +export default StatusDonasi; diff --git a/src/component/TableUtils.jsx b/src/component/TableUtils.jsx index b2bc887..a1c25aa 100644 --- a/src/component/TableUtils.jsx +++ b/src/component/TableUtils.jsx @@ -3,6 +3,7 @@ import Moment from "react-moment"; import NumberFormat from "react-number-format"; import "moment-timezone"; import Status from "./Status"; +import StatusDonasi from "./StatusDonasi"; export const stringToDate = (date) => { const dateFormat = new Date(date); return ( @@ -30,7 +31,7 @@ export const transactionToColoredStatus = (transaction) => ( ); export const donationToColoredStatus = (donation) => ( - <Status + <StatusDonasi status={donation.donation_status} label={donation.readable_donation_status} /> diff --git a/src/page/donasi/DetailDonasi.jsx b/src/page/donasi/DetailDonasi.jsx index 479127d..db3ed67 100644 --- a/src/page/donasi/DetailDonasi.jsx +++ b/src/page/donasi/DetailDonasi.jsx @@ -6,7 +6,6 @@ import PhoneIcon from "@material-ui/icons/Phone"; import PhotoIcon from "@material-ui/icons/Photo"; import { Link, navigate } from "@reach/router"; import PersonIcon from "@material-ui/icons/Person"; -import Status from "../../component/Status"; import { stringToDate } from "../../component/TableUtils"; import { ErrorDiv } from "../../component/html/html"; import Button from "@material-ui/core/Button"; @@ -15,6 +14,7 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import FormDonasi from "./FormDonasi"; +import StatusDonasi from "../../component/StatusDonasi"; const DetailDonasi = ({ idDonasi }) => { const url = `${process.env.REACT_APP_BASE_URL}/program-donations/${idDonasi}/`; const [donation, error] = useFetchSingleData(url); @@ -51,30 +51,36 @@ const DetailDonasi = ({ idDonasi }) => { margin: 2rem 3rem 3rem 3rem; flex-direction: column; justify-content: space-around; - height: 125vh; + height: 75vh; `} > {error && <ErrorDiv>Something error</ErrorDiv>} - <button - css={css` - align-self: start; - background-color: Transparent; - background-repeat: no-repeat; - border: none; - cursor: pointer; - overflow: hidden; - outline: none; - `} - onClick={() => navigate(-1)} - > - <ArrowBackIcon fontSize="large" /> - </button> - <div - css={css` - font-size: 1rem; - `} - > - ADMIN - DETAIL DONASI + <div> + <button + css={css` + align-self: start; + background-color: Transparent; + background-repeat: no-repeat; + border: none; + cursor: pointer; + overflow: hidden; + outline: none; + display: inline-block; + vertical-align: middle; + `} + onClick={() => navigate(-1)} + > + <ArrowBackIcon fontSize="large" /> + </button> + <div + css={css` + display: inline-block; + font-size: 2rem; + vertical-align: middle; + `} + > + DETAIL DONASI + </div> </div> <div css={css` @@ -120,7 +126,7 @@ const DetailDonasi = ({ idDonasi }) => { > Status:{" "} </div> - <Status + <StatusDonasi label={donation.readable_donation_status} status={donation.donation_status} /> @@ -162,7 +168,7 @@ const DetailDonasi = ({ idDonasi }) => { align-items: baseline; `} > - <PersonIcon /> + <PersonIcon style={{ color: "FFC80A" }} /> <Link to={`/pengguna/${donation.user}`}> {donation.user_full_name} / {donation.user_username} </Link> @@ -174,7 +180,7 @@ const DetailDonasi = ({ idDonasi }) => { align-items: baseline; `} > - <PhoneIcon /> + <PhoneIcon style={{ color: "FFC80A" }} /> <div>{donation.user_phone_number}</div> </div> <div diff --git a/src/page/pengguna/DetailPengguna.jsx b/src/page/pengguna/DetailPengguna.jsx index 5b9678b..8c09272 100644 --- a/src/page/pengguna/DetailPengguna.jsx +++ b/src/page/pengguna/DetailPengguna.jsx @@ -10,6 +10,7 @@ import useFetchSingleData from "../../utils/useFetchSingleData"; import { ErrorDiv } from "../../component/html/html"; import { stringToCurrency, stringToDate } from "../../component/TableUtils"; import TableComponent from "../../component/TableComponent"; +import { donationToColoredStatus } from "../../component/TableUtils"; const DetailPengguna = ({ userId }) => { const url = `${process.env.REACT_APP_BASE_URL}/users/${userId}/`; @@ -18,7 +19,7 @@ const DetailPengguna = ({ userId }) => { url: `${process.env.REACT_APP_BASE_URL}/transactions/`, pageDefault: 1, argument: `user=${userId}`, - title: "Riwayat Transaksi", + title: "", keyValuePairs: [ ["id", "id"], ["transaction_number", "ID Transaksi"], @@ -46,6 +47,35 @@ const DetailPengguna = ({ userId }) => { }, ], }; + const data_donasi = { + url: `${process.env.REACT_APP_BASE_URL}/program-donations/`, + pageDefault: 1, + argument: `user=${userId}`, + title: "", + keyValuePairs: [ + ["id", "id"], + ["donation_number", "ID Donasi"], + ["user_username", "Username"], + ["program_name", "Nama Program"], + ["", "Status", donationToColoredStatus], + ], + link: "/donasi/", + filter: [ + ["updated_at_date_range_after", "Updated from"], + ["updated_at_date_range_before", "Updated before"], + { + donation_status: { + label: "Status Donasi", + choices: [ + { "001": "Menunggu konfirmasi admin" }, + { "002": "Selesai" }, + { "003": "Dibatalkan" }, + { "004": "Menunggu pengunggahan kembali bukti transfer bank" }, + ], + }, + }, + ], + }; return ( <div data-testid="page-profile" @@ -190,6 +220,20 @@ const DetailPengguna = ({ userId }) => { margin-top: 1rem; `} > + <div + css={css` + display: flex; + `} + > + <ScheduleIcon style={{ fontSize: 25, color: "FFC80A" }} /> + <div + css={css` + font-weight: bold; + `} + > + Riwayat Transaksi + </div> + </div> <div css={css` display: flex; @@ -204,7 +248,7 @@ const DetailPengguna = ({ userId }) => { font-style: normal; font-weight: normal; font-size: 15px; - line-height: 15px; + line-height: 25px; margin-top: 1rem; `} > @@ -216,12 +260,20 @@ const DetailPengguna = ({ userId }) => { <ScheduleIcon style={{ fontSize: 25, color: "FFC80A" }} /> <div css={css` - margin-left: 2rem; + font-weight: bold; `} > Riwayat Donasi </div> </div> + <div + css={css` + display: flex; + flex-direction: column; + `} + > + <TableComponent {...data_donasi} /> + </div> </div> </div> </div> diff --git a/src/page/pengguna/ListPengguna.jsx b/src/page/pengguna/ListPengguna.jsx index 3ec3758..3d57edc 100644 --- a/src/page/pengguna/ListPengguna.jsx +++ b/src/page/pengguna/ListPengguna.jsx @@ -12,8 +12,8 @@ const ListPengguna = () => { ["id", "id"], ["full_name", "Nama Lengkap"], ["username", "Username"], - ["dummy", "dummy"], - ["dummy", "dummy"], + ["total_transactions", "Jumlah Transaksi"], + ["total_program_donations", "Jumlah Donasi"], ], link: "", }; diff --git a/src/page/transaksi/DetailTransaksi.jsx b/src/page/transaksi/DetailTransaksi.jsx index 6951315..7a7e2be 100644 --- a/src/page/transaksi/DetailTransaksi.jsx +++ b/src/page/transaksi/DetailTransaksi.jsx @@ -63,26 +63,32 @@ const DetailTransaksi = ({ idTransaksi }) => { `} > {error && <ErrorDiv>Something error</ErrorDiv>} - <button - css={css` - align-self: start; - background-color: Transparent; - background-repeat: no-repeat; - border: none; - cursor: pointer; - overflow: hidden; - outline: none; - `} - onClick={() => navigate(-1)} - > - <ArrowBackIcon fontSize="large" /> - </button> - <div - css={css` - font-size: 1rem; - `} - > - ADMIN - KELOLA TRANSAKSI + <div> + <button + css={css` + align-self: start; + background-color: Transparent; + background-repeat: no-repeat; + border: none; + cursor: pointer; + overflow: hidden; + outline: none; + vertical-align: middle; + display: inline-block; + `} + onClick={() => navigate(-1)} + > + <ArrowBackIcon fontSize="large" /> + </button> + <div + css={css` + font-size: 2rem; + vertical-align: middle; + display: inline-block; + `} + > + KELOLA TRANSAKSI + </div> </div> <div css={css` @@ -172,7 +178,7 @@ const DetailTransaksi = ({ idTransaksi }) => { align-items: baseline; `} > - <PersonIcon /> + <PersonIcon style={{ color: "FFC80A" }} /> <Link to={`/pengguna/${transaction.user}`}> {transaction.user_full_name} / {transaction.user_username} </Link> @@ -185,7 +191,7 @@ const DetailTransaksi = ({ idTransaksi }) => { align-items: baseline; `} > - <PhoneIcon /> + <PhoneIcon style={{ color: "FFC80A" }} /> <div>{transaction.user_phone_number}</div> </div> <div @@ -199,13 +205,12 @@ const DetailTransaksi = ({ idTransaksi }) => { font-size: 1.2rem; `} > - <ContactsIcon /> - Alamat Pengiriman - <div>{`${transaction.shipping_address}, + <ContactsIcon style={{ color: "FFC80A", marginRight: "4px" }} /> + {`${transaction.shipping_address}, RT ${transaction.shipping_neighborhood}, RW ${transaction.shipping_hamlet}, Kelurahan ${transaction.shipping_urban_village}, - Kecamatan ${transaction.shipping_sub_district}`}</div> + Kecamatan ${transaction.shipping_sub_district}`} </div> </div> <TableContainer component={Paper}> -- GitLab