Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
Hire-Guru
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Rishikumar
Hire-Guru
Commits
a47b67b4
Commit
a47b67b4
authored
May 11, 2026
by
AravindR-K
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
group interview
parent
78c91f3e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
35 additions
and
28 deletions
+35
-28
Frontend/src/app/pages/admin/group-interview/group-interview.css
...d/src/app/pages/admin/group-interview/group-interview.css
+20
-15
Frontend/src/app/pages/admin/group-interview/group-interview.html
.../src/app/pages/admin/group-interview/group-interview.html
+15
-13
No files found.
Frontend/src/app/pages/admin/group-interview/group-interview.css
View file @
a47b67b4
...
@@ -56,21 +56,26 @@
...
@@ -56,21 +56,26 @@
.meta-item
{
display
:
inline-flex
;
align-items
:
center
;
gap
:
6px
;
font-size
:
13px
;
color
:
var
(
--text-secondary
);
}
.meta-item
{
display
:
inline-flex
;
align-items
:
center
;
gap
:
6px
;
font-size
:
13px
;
color
:
var
(
--text-secondary
);
}
.meta-item
.material-symbols-rounded
{
font-size
:
16px
;
color
:
var
(
--text-muted
);
}
.meta-item
.material-symbols-rounded
{
font-size
:
16px
;
color
:
var
(
--text-muted
);
}
/* Candidate chips row */
/* Candidate pills row */
.candidate-chips
{
display
:
flex
;
flex-wrap
:
wrap
;
gap
:
6px
;
margin-bottom
:
12px
;
}
.candidate-pills
{
display
:
flex
;
flex-wrap
:
wrap
;
gap
:
8px
;
margin-bottom
:
14px
;
}
.candidate-chip
{
.candidate-pill
{
width
:
30px
;
height
:
30px
;
border-radius
:
50%
;
display
:
flex
;
align-items
:
center
;
display
:
flex
;
align-items
:
center
;
gap
:
6px
;
padding
:
4px
10px
4px
4px
;
justify-content
:
center
;
font-size
:
12px
;
font-weight
:
700
;
color
:
#fff
;
border-radius
:
20px
;
background
:
var
(
--bg-hover
);
border
:
1px
solid
var
(
--border-color
);
border
:
2px
solid
var
(
--bg-card
);
background
:
#667eea
;
transition
:
all
0.2s
;
transition
:
transform
0.15s
;
}
}
.candidate-pill
:hover
{
border-color
:
rgba
(
102
,
126
,
234
,
0.4
);
transform
:
translateY
(
-1px
);
}
.candidate-chip
:hover
{
transform
:
scale
(
1.15
);
z-index
:
1
;
}
.cp-avatar
{
.candidate-chip.badge-warning
{
background
:
#f59e0b
;
}
width
:
24px
;
height
:
24px
;
border-radius
:
50%
;
display
:
flex
;
align-items
:
center
;
.candidate-chip.badge-info
{
background
:
#3b82f6
;
}
justify-content
:
center
;
font-size
:
11px
;
font-weight
:
700
;
color
:
#fff
;
background
:
#667eea
;
.candidate-chip.badge-success
{
background
:
#22c55e
;
}
}
.candidate-chip.badge-purple
{
background
:
#a855f7
;
}
.cp-name
{
font-size
:
12px
;
font-weight
:
500
;
color
:
var
(
--text-primary
);
}
.iv-card-bottom
{
display
:
flex
;
justify-content
:
flex-end
;
}
.candidate-pill.badge-warning
.cp-avatar
{
background
:
#f59e0b
;
}
.candidate-pill.badge-info
.cp-avatar
{
background
:
#3b82f6
;
}
.candidate-pill.badge-success
.cp-avatar
{
background
:
#22c55e
;
}
.candidate-pill.badge-purple
.cp-avatar
{
background
:
#a855f7
;
}
.iv-card-bottom
{
display
:
flex
;
justify-content
:
flex-start
;
margin-top
:
10px
;
}
.status-summary
{
font-size
:
12px
;
color
:
var
(
--text-muted
);
font-style
:
italic
;
}
.status-summary
{
font-size
:
12px
;
color
:
var
(
--text-muted
);
font-style
:
italic
;
}
/* ═══════════════════════════════════════════════════════
/* ═══════════════════════════════════════════════════════
...
...
Frontend/src/app/pages/admin/group-interview/group-interview.html
View file @
a47b67b4
...
@@ -94,11 +94,12 @@
...
@@ -94,11 +94,12 @@
</div>
</div>
<!-- Candidate progress chips -->
<!-- Candidate progress chips -->
<div
class=
"candidate-
chip
s"
>
<div
class=
"candidate-
pill
s"
>
@for (m of g.members; track m._id) {
@for (m of g.members; track m._id) {
<span
class=
"candidate-chip"
[ngClass]=
"getStatusClass(m.status)"
[title]=
"m.candidateId?.name + ' — ' + formatStatus(m.status)"
>
<div
class=
"candidate-pill"
[ngClass]=
"getStatusClass(m.status)"
[title]=
"'Status: ' + formatStatus(m.status)"
>
{{ m.candidateId?.name?.charAt(0)?.toUpperCase() }}
<div
class=
"cp-avatar"
>
{{ m.candidateId?.name ? m.candidateId.name.charAt(0).toUpperCase() : '?' }}
</div>
</span>
<span
class=
"cp-name"
>
{{ m.candidateId?.name || 'Unknown Candidate' }}
</span>
</div>
}
}
</div>
</div>
...
@@ -433,15 +434,10 @@
...
@@ -433,15 +434,10 @@
<span
class=
"step-dot"
></span><span
class=
"step-label"
>
Done
</span>
<span
class=
"step-dot"
></span><span
class=
"step-label"
>
Done
</span>
</div>
</div>
</div>
</div>
</div>
<div
class=
"candidate-row-right"
>
<!-- Quiz scores aligned to left -->
<span
class=
"badge"
[ngClass]=
"getStatusClass(m.status)"
>
{{ formatStatus(m.status) }}
</span>
@if (m.finalDecision !== 'pending') {
<span
class=
"badge"
[ngClass]=
"getDecisionClass(m.finalDecision)"
>
{{ formatDecision(m.finalDecision) }}
</span>
}
<!-- Quiz scores -->
@if (m.quizzes?.length > 0) {
@if (m.quizzes?.length > 0) {
<div
class=
"quiz-scores-inline"
>
<div
class=
"quiz-scores-inline"
style=
"margin-top: 14px;"
>
@for (q of m.quizzes; track q.quizId) {
@for (q of m.quizzes; track q.quizId) {
<span
class=
"quiz-score-chip"
[class.completed]=
"q.completed"
>
<span
class=
"quiz-score-chip"
[class.completed]=
"q.completed"
>
{{ q.title }}: {{ q.completed ? q.score + '/' + q.totalMarks : 'Pending' }}
{{ q.title }}: {{ q.completed ? q.score + '/' + q.totalMarks : 'Pending' }}
...
@@ -449,8 +445,14 @@
...
@@ -449,8 +445,14 @@
}
}
</div>
</div>
}
}
</div>
<div
class=
"candidate-row-right"
>
<span
class=
"badge"
[ngClass]=
"getStatusClass(m.status)"
>
{{ formatStatus(m.status) }}
</span>
@if (m.finalDecision !== 'pending') {
<span
class=
"badge"
[ngClass]=
"getDecisionClass(m.finalDecision)"
>
{{ formatDecision(m.finalDecision) }}
</span>
}
<!-- Decision buttons (admin) -->
<!-- Decision buttons (admin) -->
@if (authService.getUserRole() === 'admin'
&&
m.status
!== 'completed
') {
@if (authService.getUserRole() === 'admin'
&&
m.status
=== 'evaluation
') {
<div
class=
"mini-decision-btns"
>
<div
class=
"mini-decision-btns"
>
<button
class=
"mini-btn success"
(click)=
"setDecision(m._id, 'accepted'); $event.stopPropagation()"
>
Accept
</button>
<button
class=
"mini-btn success"
(click)=
"setDecision(m._id, 'accepted'); $event.stopPropagation()"
>
Accept
</button>
<button
class=
"mini-btn danger"
(click)=
"setDecision(m._id, 'rejected'); $event.stopPropagation()"
>
Reject
</button>
<button
class=
"mini-btn danger"
(click)=
"setDecision(m._id, 'rejected'); $event.stopPropagation()"
>
Reject
</button>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment