Skip to content

Commit 090a9fa

Browse files
authored
Merge pull request #1123 from topcoder-platform/dev
PROD - gamification / skills management consolidation. SSO users option
2 parents a08b4da + 7860373 commit 090a9fa

File tree

114 files changed

+1387
-275
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+1387
-275
lines changed

src/apps/admin/src/AdminApp.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Outlet, Routes } from 'react-router-dom'
33

44
import { routerContext, RouterContextData } from '~/libs/core'
55

6-
import { AdminAppContextProvider, Layout, SWRConfigProvider } from './lib'
6+
import { AdminAppContextProvider, LayoutProps, SWRConfigProvider, useLayout } from './lib'
77
import { toolTitle } from './admin-app.routes'
88
import './lib/styles/index.scss'
99

@@ -14,6 +14,7 @@ const AdminApp: FC = () => {
1414
const { getChildRoutes }: RouterContextData = useContext(routerContext)
1515
// eslint-disable-next-line react-hooks/exhaustive-deps -- missing dependency: getChildRoutes
1616
const childRoutes = useMemo(() => getChildRoutes(toolTitle), [])
17+
const { Layout }: { Layout: FC<LayoutProps> } = useLayout()
1718

1819
useEffect(() => {
1920
document.body.classList.add('admin-app')

src/apps/admin/src/admin-app.routes.tsx

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { baseDetailPath, createBadgePath } from '~/apps/gamification-admin'
12
import { AppSubdomain, ToolTitle } from '~/config'
23
import {
34
lazyLoad,
@@ -9,12 +10,15 @@ import {
910

1011
import {
1112
billingAccountRouteId,
13+
gamificationAdminRouteId,
1214
manageChallengeRouteId,
1315
manageReviewRouteId,
1416
permissionManagementRouteId,
17+
platformRouteId,
1518
rootRoute,
1619
userManagementRouteId,
1720
} from './config/routes.config'
21+
import { platformSkillRouteId } from './platform/routes.config'
1822

1923
const AdminApp: LazyLoadedComponent = lazyLoad(() => import('./AdminApp'))
2024

@@ -107,6 +111,24 @@ const PermissionAddGroupMembersPage: LazyLoadedComponent = lazyLoad(
107111
'PermissionAddGroupMembersPage',
108112
)
109113

114+
const Platform: LazyLoadedComponent = lazyLoad(() => import('./platform/Platform'))
115+
const SkillManagement: LazyLoadedComponent = lazyLoad(
116+
() => import('./platform/skill-management/SkillManagement'),
117+
)
118+
const SkillManagementLandingPage: LazyLoadedComponent = lazyLoad(
119+
() => import('./platform/skill-management/LandingPage'),
120+
'LandingPage',
121+
)
122+
const BadgeDetailPage: LazyLoadedComponent = lazyLoad(
123+
() => import('../../gamification-admin/src/pages/badge-detail/BadgeDetailPage'),
124+
)
125+
const BadgeListingPage: LazyLoadedComponent = lazyLoad(
126+
() => import('../../gamification-admin/src/pages/badge-listing/BadgeListingPage'),
127+
)
128+
const CreateBadgePage: LazyLoadedComponent = lazyLoad(
129+
() => import('../../gamification-admin/src/pages/create-badge/CreateBadgePage'),
130+
)
131+
110132
export const toolTitle: string = ToolTitle.admin
111133

112134
export const adminRoutes: ReadonlyArray<PlatformRoute> = [
@@ -256,6 +278,43 @@ export const adminRoutes: ReadonlyArray<PlatformRoute> = [
256278
id: permissionManagementRouteId,
257279
route: permissionManagementRouteId,
258280
},
281+
282+
// Platform Management Module
283+
{
284+
children: [
285+
{
286+
children: [
287+
{
288+
element: <SkillManagementLandingPage />,
289+
id: 'skills-landing-page',
290+
route: '',
291+
},
292+
],
293+
element: <SkillManagement />,
294+
id: platformSkillRouteId,
295+
route: platformSkillRouteId,
296+
},
297+
{
298+
element: (
299+
<BadgeListingPage
300+
rootPage={`${rootRoute}/${platformRouteId}/${gamificationAdminRouteId}`}
301+
/>
302+
),
303+
route: gamificationAdminRouteId,
304+
},
305+
{
306+
element: <CreateBadgePage />,
307+
route: `${gamificationAdminRouteId}${createBadgePath}`,
308+
},
309+
{
310+
element: <BadgeDetailPage />,
311+
route: `${gamificationAdminRouteId}${baseDetailPath}/:id`,
312+
},
313+
],
314+
element: <Platform />,
315+
id: platformRouteId,
316+
route: platformRouteId,
317+
},
259318
],
260319
domain: AppSubdomain.admin,
261320
element: <AdminApp />,

src/apps/admin/src/config/routes.config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@ export const manageReviewRouteId = 'review-management'
1313
export const userManagementRouteId = 'user-management'
1414
export const billingAccountRouteId = 'billing-account'
1515
export const permissionManagementRouteId = 'permission-management'
16+
export const gamificationAdminRouteId = 'gamification-admin'
17+
export const platformRouteId = 'platform'

src/apps/admin/src/lib/components/DialogEditUserEmail/DialogEditUserEmail.module.scss

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@
55
position: relative;
66
}
77

8+
.blockForm {
9+
display: flex;
10+
flex-direction: column;
11+
gap: 20px;
12+
position: relative;
13+
}
14+
815
.actionButtons {
916
display: flex;
1017
justify-content: flex-end;

src/apps/admin/src/lib/components/DialogEditUserEmail/DialogEditUserEmail.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export const DialogEditUserEmail: FC<Props> = (props: Props) => {
6767
className={classNames(styles.container, props.className)}
6868
onSubmit={handleSubmit(onSubmit)}
6969
>
70-
<div>
70+
<div className={styles.blockForm}>
7171
<InputText
7272
type='text'
7373
name='id'
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
.modal {
2+
width: 800px !important;
3+
}
4+
5+
.container {
6+
display: flex;
7+
flex-direction: column;
8+
gap: 20px;
9+
position: relative;
10+
align-items: flex-start;
11+
12+
th:first-child {
13+
padding-left: 16px !important;
14+
}
15+
}
16+
17+
.tableCell {
18+
white-space: break-spaces !important;
19+
text-align: left !important;
20+
}
21+
22+
.actionButtons {
23+
display: flex;
24+
justify-content: flex-end;
25+
gap: 6px;
26+
width: 100%;
27+
}
28+
29+
.btnActions {
30+
display: flex;
31+
justify-content: flex-end;
32+
gap: 6px;
33+
}
34+
35+
.blockAction {
36+
width: 120px;
37+
}
38+
39+
.loadingSpinnerContainer {
40+
position: relative;
41+
height: 100px;
42+
43+
.spinner {
44+
background: none;
45+
}
46+
}
47+
48+
.dialogLoadingSpinnerContainer {
49+
position: absolute;
50+
width: 100%;
51+
display: flex;
52+
align-items: center;
53+
justify-content: center;
54+
bottom: 0;
55+
height: 64px;
56+
left: 0;
57+
58+
.spinner {
59+
background: none;
60+
}
61+
}
62+
63+
.desktopTable {
64+
td {
65+
vertical-align: middle;
66+
}
67+
}
68+
69+
.mobileTable {
70+
width: 100%;
71+
}

0 commit comments

Comments
 (0)