Browse Source

UPDATE

tags/Baseline_30082024_FRONTEND_UAT
MSI\derek 1 year ago
parent
commit
5f169bc0b1
7 changed files with 40 additions and 14 deletions
  1. +2
    -1
      src/components/CreateGroup/UserAllocation.tsx
  2. +0
    -3
      src/components/CreateStaff/CreateStaff.tsx
  3. +2
    -0
      src/components/EditTeam/EditTeam.tsx
  4. +2
    -2
      src/components/EditUserGroup/EditUserGroup.tsx
  5. +8
    -6
      src/components/UserGroupSearch/UserGroupSearch.tsx
  6. +1
    -2
      src/components/UserGroupSearch/UserGroupSearchWrapper.tsx
  7. +25
    -0
      src/i18n/en/team.json

+ 2
- 1
src/components/CreateGroup/UserAllocation.tsx View File

@@ -34,6 +34,7 @@ export interface Props {
} }


const UserAllocation: React.FC<Props> = ({ users }) => { const UserAllocation: React.FC<Props> = ({ users }) => {
console.log(users)
const { t } = useTranslation(); const { t } = useTranslation();
const { const {
setValue, setValue,
@@ -42,7 +43,7 @@ const UserAllocation: React.FC<Props> = ({ users }) => {
reset, reset,
resetField, resetField,
} = useFormContext<CreateGroupInputs>(); } = useFormContext<CreateGroupInputs>();
const initialUsers = users.map((u) => ({ ...u })).sort((a, b) => a.id - b.id).filter((u) => u.groupId !== null);
const initialUsers = users.map((u) => ({ ...u })).sort((a, b) => a.id - b.id).filter((u) => u.groupId === null);
const [filteredUsers, setFilteredUsers] = useState(initialUsers); const [filteredUsers, setFilteredUsers] = useState(initialUsers);
const [selectedUsers, setSelectedUsers] = useState<typeof filteredUsers>( const [selectedUsers, setSelectedUsers] = useState<typeof filteredUsers>(
() => { () => {


+ 0
- 3
src/components/CreateStaff/CreateStaff.tsx View File

@@ -96,9 +96,6 @@ const CreateStaff: React.FC<formProps> = ({ combos }) => {
if (data.phone2!.length > 0) { if (data.phone2!.length > 0) {
formProps.setError("phone2", { message: t("Please Enter Different Phone No.."), type: "required" }) formProps.setError("phone2", { message: t("Please Enter Different Phone No.."), type: "required" })
} }
console.log(data.phone1)
console.log(data.emergContactPhone)
console.log(data.phone1 === data.emergContactPhone)
formProps.setError("emergContactPhone", { message: t("Please Enter Different Phone No.."), type: "required" }) formProps.setError("emergContactPhone", { message: t("Please Enter Different Phone No.."), type: "required" })
} }
if (!regex_email.test(data.email)) { if (!regex_email.test(data.email)) {


+ 2
- 0
src/components/EditTeam/EditTeam.tsx View File

@@ -26,6 +26,8 @@ interface Props {


const EditTeam: React.FC<Props> = async ({ staff, teamInfo }) => { const EditTeam: React.FC<Props> = async ({ staff, teamInfo }) => {
const { team, staffIds } = teamInfo; const { team, staffIds } = teamInfo;
console.log(team.name)
// console.log(staffIds)
const { t } = useTranslation(); const { t } = useTranslation();
const formProps = useForm<CreateTeamInputs>(); const formProps = useForm<CreateTeamInputs>();
const searchParams = useSearchParams(); const searchParams = useSearchParams();


+ 2
- 2
src/components/EditUserGroup/EditUserGroup.tsx View File

@@ -137,13 +137,13 @@ const EditUserGroup: React.FC<Props> = ({ users, auths, group }) => {
{tabIndex === 1 && <AuthorityAllocation auth={auths!!}/>} {tabIndex === 1 && <AuthorityAllocation auth={auths!!}/>}
{tabIndex === 2 && <UserAllocation users={users!!} />} {tabIndex === 2 && <UserAllocation users={users!!} />}
<Stack direction="row" justifyContent="flex-end" gap={1}> <Stack direction="row" justifyContent="flex-end" gap={1}>
<Button
{/* <Button
variant="text" variant="text"
startIcon={<RestartAlt />} startIcon={<RestartAlt />}
onClick={resetGroup} onClick={resetGroup}
> >
{t("Reset")} {t("Reset")}
</Button>
</Button> */}
<Button <Button
variant="outlined" variant="outlined"
startIcon={<Close />} startIcon={<Close />}


+ 8
- 6
src/components/UserGroupSearch/UserGroupSearch.tsx View File

@@ -13,14 +13,14 @@ import { deleteUser } from "@/app/api/user/actions";
import { deleteGroup } from "@/app/api/group/actions"; import { deleteGroup } from "@/app/api/group/actions";


interface Props { interface Props {
users: UserGroupResult[];
groups: UserGroupResult[];
} }
type SearchQuery = Partial<Omit<UserGroupResult, "id">>; type SearchQuery = Partial<Omit<UserGroupResult, "id">>;
type SearchParamNames = keyof SearchQuery; type SearchParamNames = keyof SearchQuery;


const UserGroupSearch: React.FC<Props> = ({ users }) => {
const UserGroupSearch: React.FC<Props> = ({ groups }) => {
const { t } = useTranslation(); const { t } = useTranslation();
const [filteredUser, setFilteredUser] = useState(users);
const [filteredGroups, setFilteredGroups] = useState(groups);
const router = useRouter(); const router = useRouter();


const searchCriteria: Criterion<SearchParamNames>[] = useMemo( const searchCriteria: Criterion<SearchParamNames>[] = useMemo(
@@ -51,6 +51,8 @@ const UserGroupSearch: React.FC<Props> = ({ users }) => {
deleteDialog(async () => { deleteDialog(async () => {
await deleteGroup(group.id); await deleteGroup(group.id);
successDialog(t("Delete Success"), t); successDialog(t("Delete Success"), t);
setFilteredGroups((prev) => prev.filter((obj) => obj.id !== group.id));

}, t); }, t);
}, []); }, []);


@@ -80,8 +82,8 @@ const UserGroupSearch: React.FC<Props> = ({ users }) => {
<SearchBox <SearchBox
criteria={searchCriteria} criteria={searchCriteria}
onSearch={(query) => { onSearch={(query) => {
setFilteredUser(
users.filter(
setFilteredGroups(
groups.filter(
(u) => (u) =>
u.name.toLowerCase().includes(query.name.toLowerCase()) && u.name.toLowerCase().includes(query.name.toLowerCase()) &&
u.description.toLowerCase().includes(query.description.toLowerCase()) u.description.toLowerCase().includes(query.description.toLowerCase())
@@ -89,7 +91,7 @@ const UserGroupSearch: React.FC<Props> = ({ users }) => {
) )
}} }}
/> />
<SearchResults<UserGroupResult> items={filteredUser} columns={columns} />
<SearchResults<UserGroupResult> items={filteredGroups} columns={columns} />
</> </>
); );
}; };


+ 1
- 2
src/components/UserGroupSearch/UserGroupSearchWrapper.tsx View File

@@ -9,9 +9,8 @@ interface SubComponents {


const UserGroupSearchWrapper: React.FC & SubComponents = async () => { const UserGroupSearchWrapper: React.FC & SubComponents = async () => {
const group = await fetchGroup() const group = await fetchGroup()
console.log(group.records);


return <UserGroupSearch users={group.records} />;
return <UserGroupSearch groups={group.records} />;
}; };


UserGroupSearchWrapper.Loading = UserGroupSearchLoading; UserGroupSearchWrapper.Loading = UserGroupSearchLoading;


+ 25
- 0
src/i18n/en/team.json View File

@@ -0,0 +1,25 @@
{
"Team": "Team",
"Team Info": "Team Info",
"Staff Allocation": "Staff Allocation",
"Create Team": "Create Team",
"Edit Team": "Edit Team",
"name": "Name",
"code": "Code",
"description": "Description",
"Team Description": "Team Description",
"edit": "edit",
"teamLead": "teamLead",
"Confirm": "Confirm",
"Cancel": "Cancel",
"delete": "delete",
"add": "add",
"remove": "remove",
"Staff Pool": "Staff Pool",
"Allocated Staff": "Allocated Staff",
"Staff Id": "Staff Id",
"Staff Name": "Staff Name",
"Position": "Position",
"Search by Staff Id, Name or Position.": "Search by Staff Id, Name or Position.",
"An error has occurred. Please try again later.": "An error has occurred. Please try again later"
}

Loading…
Cancel
Save