// @mui import { Box, Button, Card, Collapse, Container, FormControl, Grid, IconButton, InputLabel, MenuItem, OutlinedInput, Paper, Select, SelectChangeEvent, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, TextField, Typography, Badge } from '@mui/material'; import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight'; import PublishIcon from '@mui/icons-material/Publish'; // hooks import useSettings from '../../hooks/useSettings'; // components import Page from '../../components/Page'; import axios from '../../utils/axios'; import useAuth from '../../hooks/useAuth'; import { Link } from 'react-router-dom'; import React, { useEffect, useRef } from 'react'; import { Theme, useTheme } from '@mui/material/styles'; export default function Members() { const { themeStretch } = useSettings(); const { logout } = useAuth(); const loadSomething = () => { console.log('Loading Something') } type Member = { id: number; code: string; nik: string; name: string; plan_code: string; number_of_families: number; number_of_claim: number; active: boolean; history: any[]; } function createData( member: Member ): Member { return { ...member, history: [ { date: '2020-01-05', customerId: '11091700', amount: 3, }, { date: '2020-01-02', customerId: 'Anonymous', amount: 1, }, ] } } function Row(props: { row: ReturnType }) { const { row } = props; const [open, setOpen] = React.useState(false); return ( *': { borderBottom: 'unset' } }}> setOpen(!open)} > {open ? : } {row.code} {row.name} {row.nik} {row.plan_code} {row.number_of_claim} {row.number_of_families} History Date Customer Amount Total price ($) {row.history ? row.history.map((historyRow) => ( {historyRow?.date} {historyRow?.customerId} {historyRow?.amount} {Math.round(historyRow?.amount * 1000 * 100) / 100} )) : ( No Data ) }
); } // Dummy Default Data const [memberLoading, setMemberLoading] = React.useState(true); const [members, setMembers] = React.useState([]); const loadMembers = async () => { setMemberLoading(true) const response = await axios.get('/members'); setMemberLoading(false) setMembers(response.data.map(createData)); } useEffect(() => { loadMembers(); }, []) const headStyle = { fontWeight: 'bold', }; // FILTER SELECT const ITEM_HEIGHT = 48; const ITEM_PADDING_TOP = 8; const MenuProps = { PaperProps: { style: { maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, width: 250, }, }, }; const names = [ 'PLAN001', 'PLAN002', 'PLAN003', 'PLAN004', 'PLAN005', ]; function getStyles(name: string, personName: string[], theme: Theme) { return { fontWeight: personName.indexOf(name) === -1 ? theme.typography.fontWeightRegular : theme.typography.fontWeightMedium, }; } const theme = useTheme(); const [planIdFilter, setPlanIdFilter] = React.useState([]); const handleChangePlanID = (event: SelectChangeEvent) => { const { target: { value }, } = event; setPlanIdFilter( // On autofill we get a stringified value. typeof value === 'string' ? value.split(',') : value, ); }; const [statusFilter, setStatusFilter] = React.useState([]); const handleChangeStatus = (event: SelectChangeEvent) => { const { target: { value }, } = event; setStatusFilter( // On autofill we get a stringified value. typeof value === 'string' ? value.split(',') : value, ); }; // END FILTER SELECT // IMPORT const importMember = React.useRef(null); const handleImportButton = (event: any) => { if (importMember?.current) importMember.current.click() else alert('No file selected') } return ( Member List PlanID Status Detail MemberID Name NIK PlanID Claim (time) Family (person) Status {memberLoading ? ( Loading ) : ( members.length == 0 ? ( No Data ) : ( {members.map(row => ( ))} ) )}
); }