@if (!ShowForm) {
trending_up

Skill Upgrade Proposals Queue

Auto-proposed skill level upgrades from training completions · Pending supervisor review
schedule{{ pendingCount() }} pending review
lightbulb
PROPOSED
{{ proposedCount() }}
{{ proposedAutoCount() }} auto · {{ proposedManualCount() }} manual
visibility
UNDER REVIEW
{{ underReviewCount() }}
{{ avgWaitDays() !== null ? 'Avg wait: ' + avgWaitDays() + ' days' : '—' }}
check_circle
APPROVED (MTD)
{{ approvedMTDCount() }}
{{ approvedTrendLabel() }}
cancel
REJECTED (MTD)
{{ rejectedMTDCount() }}
{{ rejectedTrendLabel() }}
search
{{ filteredUpgrades().length }} records
@for (row of filteredUpgrades(); track row.TxSkillUpgradeId) { } @if (filteredUpgrades().length === 0) { }
Employee Skill Level Change Triggered By Programme Product Family Proposed On Status Actions
{{ row.EmployeeName || '—' }} @if (row.EmployeeCode || row.Department) { {{ row.EmployeeCode }}{{ row.EmployeeCode && row.Department ? ' · ' : '' }}{{ row.Department }} } {{ row.SkillName || '—' }} @if (row.SkillCode) { {{ row.SkillCode }} }
@for (i of LEVEL_DOTS; track i) { }
arrow_forward
@for (i of LEVEL_DOTS; track i) { }
L{{ row.PreviousLevelNo + 1 }} → L{{ row.ProposedLevelNo + 1 }}
{{ getTriggerLabel(row.SourceType) }} {{ row.ProgrammeName || '—' }} {{ row.ProductFamilyName || '— All Products' }} {{ formatDate(row.ProposedOn) }} {{ getStatusLabel(row.UpgradeStatus) }} @if (rejectingId() === row.TxSkillUpgradeId) {
} @else { @if (isReviewable(row.UpgradeStatus)) { } @if (showReviewButton(row.UpgradeStatus)) { } @if (!showReviewButton(row.UpgradeStatus)) { } }
No skill upgrade proposals found
} @else { @if (form.bFormReady) {
EMPLOYEE & SKILL who this proposal is for
LEVEL CHANGE requested level movement
@for (i of LEVEL_DOTS; track i) { }
arrow_forward
@for (i of LEVEL_DOTS; track i) { }
Change preview: L{{ previousLevelNo + 1 }} → L{{ proposedLevelNo + 1 }}
REVIEW & APPROVAL supervisor decision
@if (showRejectionReason) {
}
} }