Skip to content
Merged

Feat/v6 #1242

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ const defaultFilter: ChallengeFilterCriteria = {
* Challenge Management page.
*/
export const ChallengeManagementPage: FC = () => {
const pageTitle = 'v5 Challenge Management'
const pageTitle = 'Challenge Management'
const [filterCriteria, setFilterCriteria]: [
ChallengeFilterCriteria,
Dispatch<SetStateAction<ChallengeFilterCriteria>>,
Expand Down
17 changes: 13 additions & 4 deletions src/apps/admin/src/lib/components/ChallengeList/ChallengeList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,15 @@ const Actions: FC<{
classNames={{ menu: 'challenge-list-actions-dropdown-menu' }}
>
<ul>
<li>
<a
href={`${EnvironmentConfig.ADMIN.CHALLENGE_URL}/${props.challenge.id}`}
target='_blank'
rel='noreferrer'
>
Challenge Details
</a>
</li>
<li className={cn({ disabled: !hasProjectId })}>
{hasProjectId && (
<a
Expand Down Expand Up @@ -268,11 +277,10 @@ const ChallengeList: FC<ChallengeListProps> = props => {
renderer: (challenge: Challenge) => (
// eslint-disable-next-line jsx-a11y/anchor-is-valid
<a
href={`${EnvironmentConfig.ADMIN.CHALLENGE_URL}/${challenge.id}`}
href={`${EnvironmentConfig.API.V5}/challenges/${challenge.id}`}
className={styles.challengeTitle}
onClick={function onClick() {
window.location.href = `${EnvironmentConfig.ADMIN.CHALLENGE_URL}/${challenge.id}`
}}
target='_blank'
rel='noreferrer'
>
{challenge.name}
</a>
Expand Down Expand Up @@ -334,6 +342,7 @@ const ChallengeList: FC<ChallengeListProps> = props => {
disableSorting
onToggleSort={_.noop}
className={styles.desktopTable}
preventDefault
/>
)}
{screenWidth <= 1279 && (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,12 @@

.row2,
.row3,
.row4 {
.row4,
.row5 {
grid-template-columns: 1fr auto;
}

.row5 {
.row6 {
justify-content: flex-end;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,10 @@ const MobileListView: FC<MobileListViewProps<ReviewSummary>> = props => {
))

return (
<div className={styles.mobileListViewItemContainer} key={d.legacyChallengeId}>
<div
className={styles.mobileListViewItemContainer}
key={d.legacyChallengeId || d.challengeId}
>
<div className={styles.rows}>
<div className={styles.row1}>
{/* Title */ propertyElements[0]}
Expand All @@ -74,15 +77,18 @@ const MobileListView: FC<MobileListViewProps<ReviewSummary>> = props => {
{/* Legacy ID */ propertyElements[1]}
</div>
<div className={styles.row3}>
{/* propertyElementLabels[5] */}
{/* Open Review Opp' */ propertyElements[3]}
{/* Submission End Date */ propertyElements[3]}
</div>
<div className={styles.row4}>
{propertyElementLabels[4]}
{/* Review Applications */ propertyElements[4]}
{/* Open Review Opp' */ propertyElements[4]}
</div>
<div className={styles.row5}>
{/* Action */ propertyElements[5]}
{propertyElementLabels[5]}
{/* Review Applications */ propertyElements[5]}
</div>
<div className={styles.row6}>
{/* Action */ propertyElements[6]}
</div>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
import { FC, useMemo, useState } from 'react'
import { useNavigate } from 'react-router-dom'
import { format } from 'date-fns'

import { Sort } from '~/apps/admin/src/platform/gamification-admin/src/game-lib'
import { EnvironmentConfig } from '~/config'
import { useWindowSize, WindowSize } from '~/libs/shared'
import { Button, colWidthType, LinkButton, Table, type TableColumn } from '~/libs/ui'
import { Sort } from '~/apps/admin/src/platform/gamification-admin/src/game-lib'

import { Pagination } from '../common/Pagination'
import { useEventCallback } from '../../hooks'
import { ReviewFilterCriteria, ReviewSummary } from '../../models'
import { Paging } from '../../models/challenge-management/Pagination'
import { Pagination } from '../common/Pagination'

import { MobileListView } from './MobileListView'
import styles from './ReviewSummaryList.module.scss'
Expand Down Expand Up @@ -98,21 +99,21 @@ const ReviewSummaryList: FC<ReviewListProps> = props => {
},
// I think this column is important, and it exits in `admin-app`
// but resp does not have it, so I just comment it here
// {
// label: 'Submission End Date',
// propertyName: 'submissionEndDate',
// renderer: (review: ReviewSummary) => (
// // eslint-disable-next-line jsx-a11y/anchor-is-valid
// <div className={styles.submissionDate}>
// {review.submissionEndDate}
// {/* {format(
// new Date(review.submissionEndDate),
// 'MMM dd, yyyy HH:mm'
// )} */}
// </div>
// ),
// type: 'element',
// },
{
label: 'Submission End Date',
propertyName: 'submissionEndDate',
renderer: (review: ReviewSummary) => (
// eslint-disable-next-line jsx-a11y/anchor-is-valid
<div className={styles.submissionDate}>
{review.submissionEndDate
? format(
new Date(review.submissionEndDate),
'MMM dd, yyyy HH:mm',
) : 'N/A'}
</div>
),
type: 'element',
},
{
columnId: 'OpenReviewOpp',
label: 'Open Review Opp',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ export const UsersFilters: FC<Props> = props => {
Tips:
<br />
- Wildcard(*) is available for partial matching. (e.g.
ChrisB*, chris*@appirio.com)
ChrisB*, chris*@wipro.com)
<br />
- Maximum number of searched results is 500.
</p>
Expand Down
20 changes: 6 additions & 14 deletions src/apps/admin/src/lib/components/UsersTable/UsersTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import _ from 'lodash'
import classNames from 'classnames'
import moment from 'moment'

import { EnvironmentConfig } from '~/config'
import { useWindowSize, WindowSize } from '~/libs/shared'
import {
Button,
Expand All @@ -26,13 +27,11 @@ import { DialogEditUserTerms } from '../DialogEditUserTerms'
import { DialogEditUserStatus } from '../DialogEditUserStatus'
import { DialogUserStatusHistory } from '../DialogUserStatusHistory'
import { DropdownMenuButton } from '../common/DropdownMenuButton'
import { useOnComponentDidMount, useTableFilterLocal, useTableFilterLocalProps } from '../../hooks'
import { useTableFilterLocal, useTableFilterLocalProps } from '../../hooks'
import { TABLE_DATE_FORMAT } from '../../../config/index.config'
import { SSOLoginProvider, UserInfo } from '../../models'
import { Pagination } from '../common/Pagination'
import { ReactComponent as RectangleListRegularIcon } from '../../assets/i/rectangle-list-regular-icon.svg'
import { fetchSSOLoginProviders } from '../../services'
import { handleError } from '../../utils'

import styles from './UsersTable.module.scss'

Expand All @@ -50,7 +49,10 @@ interface Props {

export const UsersTable: FC<Props> = props => {
const [colWidth, setColWidth] = useState<colWidthType>({})
const [ssoLoginProviders, setSsoLoginProviders] = useState<SSOLoginProvider[]>([])
const ssoLoginProviders = useMemo<SSOLoginProvider[]>(
() => EnvironmentConfig.ADMIN_SSO_LOGIN_PROVIDERS.map(provider => ({ ...provider })),
[],
)
const [showDialogEditUserEmail, setShowDialogEditUserEmail] = useState<
UserInfo | undefined
>()
Expand Down Expand Up @@ -370,16 +372,6 @@ export const UsersTable: FC<Props> = props => {
[isTablet, isMobile],
)

useOnComponentDidMount(() => {
fetchSSOLoginProviders()
.then(result => {
setSsoLoginProviders(result)
})
.catch(e => {
handleError(e)
})
})

return (
<div className={classNames(styles.container, props.className)}>
<Table
Expand Down
19 changes: 4 additions & 15 deletions src/apps/admin/src/lib/hooks/useManageUserSSOLogin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,8 @@ import { toast } from 'react-toastify'
import _ from 'lodash'

import { FormAddSSOLoginData } from '../models/FormAddSSOLoginData.model'
import { SSOLoginProvider, SSOUserLogin, UserInfo } from '../models'
import {
createSSOUserLogin,
deleteSSOUserLogin,
fetchSSOLoginProviders,
fetchSSOUserLogins,
updateSSOUserLogin,
} from '../services'
import { SSOUserLogin, UserInfo } from '../models'
import { createSSOUserLogin, deleteSSOUserLogin, fetchSSOUserLogins, updateSSOUserLogin } from '../services'
import { handleError } from '../utils'

import { useOnComponentDidMount } from './useOnComponentDidMount'
Expand All @@ -25,7 +19,6 @@ import { useOnComponentDidMount } from './useOnComponentDidMount'
type SSOUserLoginsState = {
isLoading: boolean
isAdding: boolean
providers: SSOLoginProvider[]
ssoUserLogins: SSOUserLogin[]
isRemoving: { [key: string]: boolean }
}
Expand Down Expand Up @@ -59,7 +52,6 @@ type SSOUserLoginsReducerAction =
type: typeof SSOUserLoginsActionType.FETCH_SSO_USER_LOGINS_DONE
payload: {
ssoUserLogins: SSOUserLogin[]
providers: SSOLoginProvider[]
}
}
| {
Expand Down Expand Up @@ -93,7 +85,6 @@ const reducer = (
return {
...previousState,
isLoading: false,
providers: action.payload.providers,
ssoUserLogins: action.payload.ssoUserLogins,
}
}
Expand Down Expand Up @@ -222,20 +213,18 @@ export function useManageUserSSOLogin(
isAdding: false,
isLoading: false,
isRemoving: {},
providers: [],
ssoUserLogins: [],
})

const doFetchSSOUserLogins = useCallback(() => {
dispatch({
type: SSOUserLoginsActionType.FETCH_SSO_USER_LOGINS_INIT,
})
Promise.all([fetchSSOUserLogins(userInfo.id), fetchSSOLoginProviders()])
fetchSSOUserLogins(userInfo.id)
.then(result => {
dispatch({
payload: {
providers: result[1],
ssoUserLogins: result[0],
ssoUserLogins: result,
},
type: SSOUserLoginsActionType.FETCH_SSO_USER_LOGINS_DONE,
})
Expand Down
4 changes: 4 additions & 0 deletions src/apps/admin/src/lib/models/MemberInfo.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,8 @@
export interface MemberInfo {
handle: string
userId: number
firstName?: string | null
lastName?: string | null
photoURL?: string | null
maxRating?: unknown
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
export interface ReviewSummary {
/** Challenge uuid */
challengeId: string
/** Challenge Name */
challengeName: string
/** Challenge Status */
Expand Down
Loading