Commit d8b69c1e by nilu

S51619299 # Client - Incoming Issues #Messaging & Workflow Changes

parent 1dffa8ed
...@@ -622,7 +622,7 @@ public class Job extends BaseJob ...@@ -622,7 +622,7 @@ public class Job extends BaseJob
public List<WorkFlowStage> getSortedMiddleStages() public List<WorkFlowStage> getSortedMiddleStages()
{ {
Filter<WorkFlowStage> filter = WorkFlowStage.SearchByAll().andStageType(new NotInFilter<>(StageType.INITIAL, StageType.UNSUITABLE, StageType.WITHDREW)); Filter<WorkFlowStage> filter = WorkFlowStage.SearchByAll().andStageType(new EqualsFilter<>(StageType.GENERIC));
return ObjstoreUtils.sort(pipelineJob().toWorkFlowTemplate().toWorkFlowStages(filter).uniqueVals(), return ObjstoreUtils.sort(pipelineJob().toWorkFlowTemplate().toWorkFlowStages(filter).uniqueVals(),
new ObjectTransform[]{WorkFlowStage.pipesWorkFlowStage().toSortOrder()}, new ObjectTransform[]{WorkFlowStage.pipesWorkFlowStage().toSortOrder()},
......
...@@ -796,4 +796,26 @@ public class JobApplication extends BaseJobApplication ...@@ -796,4 +796,26 @@ public class JobApplication extends BaseJobApplication
{ {
return isTrue(super.getPreferRemote()); return isTrue(super.getPreferRemote());
} }
public Boolean hasCompletedStep(StepType stepType)
{
if(stepType == StepType.DIVERSITY && isDiversityIncluded())
{
return diversityCompleted();
}
else if(stepType == StepType.REQUIREMENT_FIT)
{
return selectionCompleted();
}
else if(stepType == StepType.CULTURE_FIT)
{
return cultureCompleted();
}
else if(stepType == StepType.ROLE_FIT)
{
return assessmentCompleted();
}
return true;
}
} }
\ No newline at end of file
...@@ -4,6 +4,7 @@ import java.util.ArrayList; ...@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import oneit.logging.LogLevel; import oneit.logging.LogLevel;
import oneit.logging.LogMgr; import oneit.logging.LogMgr;
import oneit.logging.LoggingArea; import oneit.logging.LoggingArea;
...@@ -51,7 +52,22 @@ public class SearchApplicant extends BaseSearchApplicant ...@@ -51,7 +52,22 @@ public class SearchApplicant extends BaseSearchApplicant
app.setApplicationStatus(appStatus); app.setApplicationStatus(appStatus);
if(getFilter() != null) if(!getShowIncomplete())
{
Set<WorkFlowStep> steps = app.pipelineJobApplication().toWorkFlowStage().toSteps().uniqueVals();
for(WorkFlowStep step : steps)
{
skip = !app.hasCompletedStep(step.getStepType());
if(skip)
{
break;
}
}
}
if(!skip && getFilter() != null)
{ {
skip = applyFilters(app); skip = applyFilters(app);
} }
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
<IMPORT value="performa.orm.*"/> <IMPORT value="performa.orm.*"/>
<IMPORT value="performa.orm.types.*"/> <IMPORT value="performa.orm.types.*"/>
<TRANSIENT name="ShowIncomplete" type="Boolean" defaultValue="Boolean.FALSE"/>
<TABLE tablePrefix="object" polymorphic="FALSE" > <TABLE tablePrefix="object" polymorphic="FALSE" >
<ATTRIB name="Details" type="String" dbcol="xxxx" /> <ATTRIB name="Details" type="String" dbcol="xxxx" />
......
...@@ -108,7 +108,7 @@ public class WorkflowDataMigration ...@@ -108,7 +108,7 @@ public class WorkflowDataMigration
for(JobApplication jobApplication : job.getJobApplicationsSet()) for(JobApplication jobApplication : job.getJobApplicationsSet())
{ {
jobApplication.setApplicantSource(jobApplication.getIsEmailIngest() ? ApplicantSource.INGEST : ApplicantSource.APPLY_URL); jobApplication.setApplicantSource(jobApplication.isTrue(jobApplication.getIsEmailIngest()) ? ApplicantSource.INGEST : ApplicantSource.APPLY_URL);
jobApplication.setWorkFlowStage(getWFStageByStatus(wfTemplate, jobApplication.getApplicationStatus())); jobApplication.setWorkFlowStage(getWFStageByStatus(wfTemplate, jobApplication.getApplicationStatus()));
} }
} }
......
...@@ -2735,24 +2735,24 @@ a.forgot-pass { ...@@ -2735,24 +2735,24 @@ a.forgot-pass {
float: left; float: left;
} }
.job-post { .job-post {
width: 32.9%; width: 45%;
padding-left: 39px; padding-left: 39px;
padding-top: 25px; padding-top: 25px;
padding-bottom: 25px; padding-bottom: 25px;
border-right: solid 1px rgba(229, 232, 235, 0.5); border-right: solid 1px rgba(229, 232, 235, 0.5);
} }
.job-application { .job-application {
width: 21.2%; width: 20%;
padding: 24px 15px 26px 50px; padding: 24px 15px 26px 50px;
border-right: solid 1px rgba(229, 232, 235, 0.5); border-right: solid 1px rgba(229, 232, 235, 0.5);
} }
.job-shortlisted{ .job-shortlisted{
width: 21.2%; width: 10%;
padding: 24px 15px 26px 50px; padding: 24px 15px 26px 50px;
border-right: solid 1px rgba(229, 232, 235, 0.5); border-right: solid 1px rgba(229, 232, 235, 0.5);
} }
.job-states{ .job-states{
width: 24%; width: 25%;
padding: 28px 28px; padding: 28px 28px;
} }
.job-post-name{ .job-post-name{
...@@ -3041,7 +3041,12 @@ a.forgot-pass { ...@@ -3041,7 +3041,12 @@ a.forgot-pass {
.shorting-dropdown .search-input { .shorting-dropdown .search-input {
border : solid 1px #b9bbbd; border : solid 1px #b9bbbd;
} }
label.show-incomplete {
margin-right: 20px;
font-size: 13px;
color: #4E5258;
font-family: "Usual-Regular";
}
.select2type .dropdown-toggle { .select2type .dropdown-toggle {
font-size: 12px; font-size: 12px;
...@@ -4472,7 +4477,7 @@ no-applicant.inactive a:hover,no-applicant.inactive a:hover span{ ...@@ -4472,7 +4477,7 @@ no-applicant.inactive a:hover,no-applicant.inactive a:hover span{
color: #4a4a4a; color: #4a4a4a;
font-size: 20px; font-size: 20px;
padding: 14px 0 17px 21px; padding: 14px 0 17px 21px;
width: 22%; width: 20%;
} }
.appli-list-name.wider-box { .appli-list-name.wider-box {
width: 37%; width: 37%;
...@@ -4493,13 +4498,21 @@ no-applicant.inactive a:hover,no-applicant.inactive a:hover span{ ...@@ -4493,13 +4498,21 @@ no-applicant.inactive a:hover,no-applicant.inactive a:hover span{
.diversity .checkbox-list input[type="checkbox"]:disabled + label { .diversity .checkbox-list input[type="checkbox"]:disabled + label {
opacity: 1; opacity: 1;
} }
.appli-message{
width: 5%;
color: #4a4a4a;
font-size: 11px;
letter-spacing: 1px;
padding: 15px 18px 15px;
text-transform: uppercase;
}
.appli-jcs { .appli-jcs {
color: #4a4a4a; color: #4a4a4a;
font-size: 11px; font-size: 11px;
letter-spacing: 1px; letter-spacing: 1px;
padding: 26px 18px 5px; padding: 26px 18px 5px;
text-transform: uppercase; text-transform: uppercase;
width: 15%; width: 14%;
} }
.appli-jcs2 { .appli-jcs2 {
color: #4a4a4a; color: #4a4a4a;
...@@ -4595,7 +4608,7 @@ no-applicant.inactive a:hover,no-applicant.inactive a:hover span{ ...@@ -4595,7 +4608,7 @@ no-applicant.inactive a:hover,no-applicant.inactive a:hover span{
.appli-status { .appli-status {
border: medium none; border: medium none;
padding: 15px 23px 0; padding: 15px 23px 0;
width: 15%; width: 10%;
} }
.appli-status.include-diversity { .appli-status.include-diversity {
width: 10%; width: 10%;
...@@ -5478,9 +5491,9 @@ img.alert-icon {float: left;} ...@@ -5478,9 +5491,9 @@ img.alert-icon {float: left;}
.d-three-box {max-width: 100%;width: 32.3%;} .d-three-box {max-width: 100%;width: 32.3%;}
.d-create-job-btn{margin: 15px 0;} .d-create-job-btn{margin: 15px 0;}
.job-post{width: 100%;border-bottom: 1px solid rgba(229, 232, 235, 0.5);} .job-post{width: 100%;border-bottom: 1px solid rgba(229, 232, 235, 0.5);}
.job-application{width: 33.2%} .job-application{width: 40%}
.job-shortlisted{width: 33.2%} .job-shortlisted{width: 20%}
.job-states{width: 33.2%;padding-top: 24px;padding-bottom: 24px;} .job-states{width: 40%;padding-top: 24px;padding-bottom: 24px;}
.job-filter > ul {padding-right: 0;} .job-filter > ul {padding-right: 0;}
.job-filter {display: inline-block;position: relative;top: 0;width: 100%;margin-bottom: 18px;margin-top: 8px;} .job-filter {display: inline-block;position: relative;top: 0;width: 100%;margin-bottom: 18px;margin-top: 8px;}
.shorting-dropdown {float: right;} .shorting-dropdown {float: right;}
...@@ -5837,7 +5850,8 @@ img.alert-icon {float: left;} ...@@ -5837,7 +5850,8 @@ img.alert-icon {float: left;}
.search-bar {width: 100%;} .search-bar {width: 100%;}
.social-login li{width: 31.2%;} .social-login li{width: 31.2%;}
.ratting-box span {display: inline-block;margin: 10px 0;width: 100%;} .ratting-box span {display: inline-block;margin: 10px 0;width: 100%;}
.job-application,.job-shortlisted {width: 50%;} .job-application {width: 70%;}
.job-shortlisted {width: 30%;}
.job-states{width: 100%;border-top: 1px solid rgba(229, 232, 235, 0.5);} .job-states{width: 100%;border-top: 1px solid rgba(229, 232, 235, 0.5);}
.job-list{border-left: 3px solid #03ac66;} .job-list{border-left: 3px solid #03ac66;}
.all-jobs-title {margin-top: 0;} .all-jobs-title {margin-top: 0;}
......
...@@ -14,9 +14,16 @@ ...@@ -14,9 +14,16 @@
String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS); String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
List<JobApplication> applications = (List<JobApplication>) getData(request, "applications"); List<JobApplication> applications = (List<JobApplication>) getData(request, "applications");
int noOfIncomplete = job.getNoOfCandidatesFor(job.getWorkFlowByStageType(StageType.INCOMPLETE), job.getWorkFlowByStageType(StageType.POST_INGEST)); WorkFlowStage initialWorkFlow = job.getWorkFlowByStageType(StageType.INITIAL);
int noOfUnsuitable = job.getNoOfCandidatesFor(job.getWorkFlowByStageType(StageType.UNSUITABLE)); WorkFlowStage successfulWorkFlow = job.getWorkFlowByStageType(StageType.SUCCESSFUL);
int allCandidates = job.getNoOfCandidatesApplied(); WorkFlowStage unsuitableWorkFlow = job.getWorkFlowByStageType(StageType.UNSUITABLE);
WorkFlowStage withdrewWorkFlow = job.getWorkFlowByStageType(StageType.WITHDREW);
int noOfIncomplete = job.getNoOfCandidatesFor(initialWorkFlow);
int noOfSuccessful = job.getNoOfCandidatesFor(successfulWorkFlow);
int noOfUnsuitable = job.getNoOfCandidatesFor(unsuitableWorkFlow);
int noOfWithdrew = job.getNoOfCandidatesFor(withdrewWorkFlow);
int allCandidates = job.pipelineJob().toJobApplications().uniqueVals().size();
%> %>
<oneit:dynIncluded> <oneit:dynIncluded>
...@@ -31,28 +38,28 @@ ...@@ -31,28 +38,28 @@
AppView="<%= appView %>"/> AppView="<%= appView %>"/>
<div class="int-timeline"> <div class="int-timeline">
<ul> <ul>
<li class="<%= "incomplete " + (noOfIncomplete > 0 ? "has-applicant" : "no-applicant") %> <%= stageType == StageType.INCOMPLETE || stageType == StageType.POST_INGEST ? "active" : "inactive" %>"> <li class="<%= "incomplete " + (allCandidates > 0 ? "has-applicant" : "" )%> <%= (workFlowStage == null) ? "active" : "inactive" %>">
<oneit:button id="unsuitableBtn" value=" " name="gotoPage" skin="link" disabled="<%= noOfIncomplete > 0 ? "false" : "true" %>" <oneit:button value=" " name="gotoPage" skin="link" disabled="<%= allCandidates > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", job.getWorkFlowByStageType(StageType.INCOMPLETE)).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", null).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= noOfIncomplete %>" mode="Integer" /> <oneit:toString value="<%= allCandidates %>" mode="Integer" />
</span> </span>
<div class="app-b-title"> <div class="app-b-title">All Applicants</div>
<%= job.getWorkFlowStageBySortOrder(1) %>
</div>
</oneit:button> </oneit:button>
</li> </li>
<li class="<%= allCandidates > 0 ? "has-applicant" : "" %> <%= (workFlowStage == null) ? "active" : "inactive" %>"> <li class="<%= noOfIncomplete > 0 ? "has-applicant" : "no-applicant" %> <%= stageType == StageType.INITIAL ? "active" : "inactive" %>">
<oneit:button value=" " name="gotoPage" skin="link" disabled="<%= allCandidates > 0 ? "false" : "true" %>" <oneit:button id="unsuitableBtn" value=" " name="gotoPage" skin="link" disabled="<%= noOfIncomplete > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", null).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", initialWorkFlow).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= allCandidates %>" mode="Integer" /> <oneit:toString value="<%= noOfIncomplete %>" mode="Integer" />
</span> </span>
<div class="app-b-title">All Applicants</div> <div class="app-b-title">
<%= initialWorkFlow %>
</div>
</oneit:button> </oneit:button>
</li> </li>
<% <%
...@@ -60,7 +67,7 @@ ...@@ -60,7 +67,7 @@
{ {
int noOfCandidates = job.getNoOfCandidatesFor(workflow); int noOfCandidates = job.getNoOfCandidatesFor(workflow);
%> %>
<li class="<%= noOfCandidates > 0 ? "has-applicant" : "" %> <%= workflow.equals(workFlowStage) ? "active" : "inactive" %>"> <li class="<%= noOfCandidates > 0 ? "has-applicant" : "" %> <%= workflow.equals(workFlowStage) && stageType == StageType.GENERIC ? "active" : "inactive" %>">
<oneit:button value=" " name="gotoPage" skin="link" disabled="<%= noOfCandidates > 0 ? "false" : "true" %>" <oneit:button value=" " name="gotoPage" skin="link" disabled="<%= noOfCandidates > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", workflow).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", workflow).toMap())
...@@ -69,7 +76,7 @@ ...@@ -69,7 +76,7 @@
<oneit:toString value="<%= noOfCandidates %>" mode="Integer" /> <oneit:toString value="<%= noOfCandidates %>" mode="Integer" />
</span> </span>
<div class="app-b-title"> <div class="app-b-title">
<%= workflow.getName() %> <%= workflow.getName() %>
</div> </div>
</oneit:button> </oneit:button>
</li> </li>
...@@ -78,16 +85,42 @@ ...@@ -78,16 +85,42 @@
%> %>
</ul> </ul>
</div> </div>
<div class="unsutable <%= noOfWithdrew > 0 ? "has-applicant" : "no-applicant" %> <%= stageType == StageType.WITHDREW ? "active" : "inactive" %>">
<oneit:button value=" " name="gotoPage" skin="link" disabled="<%= noOfWithdrew > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", withdrewWorkFlow).toMap())
.toMap() %>">
<span>
<oneit:toString value="<%= noOfWithdrew %>" mode="Integer" />
</span>
<div class="app-b-title">
<%= withdrewWorkFlow %>
</div>
</oneit:button>
</div>
<div class="unsutable <%= noOfUnsuitable > 0 ? "has-applicant" : "no-applicant" %> <%= stageType == StageType.UNSUITABLE ? "active" : "inactive" %>"> <div class="unsutable <%= noOfUnsuitable > 0 ? "has-applicant" : "no-applicant" %> <%= stageType == StageType.UNSUITABLE ? "active" : "inactive" %>">
<oneit:button id="unsuitableBtn" value=" " name="gotoPage" skin="link" disabled="<%= noOfUnsuitable > 0 ? "false" : "true" %>" <oneit:button value=" " name="gotoPage" skin="link" disabled="<%= noOfUnsuitable > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", job.getWorkFlowByStageType(StageType.UNSUITABLE)).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", unsuitableWorkFlow).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= noOfUnsuitable %>" mode="Integer" /> <oneit:toString value="<%= noOfUnsuitable %>" mode="Integer" />
</span> </span>
<div class="app-b-title"> <div class="app-b-title">
<%= job.getWorkFlowStageBySortOrder(9)%> <%= unsuitableWorkFlow%>
</div>
</oneit:button>
</div>
<div class="unsutable <%= noOfSuccessful > 0 ? "has-applicant" : "no-applicant" %> <%= stageType == StageType.SUCCESSFUL ? "active" : "inactive" %>">
<oneit:button value=" " name="gotoPage" skin="link" disabled="<%= noOfSuccessful > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", successfulWorkFlow).toMap())
.toMap() %>">
<span>
<oneit:toString value="<%= noOfSuccessful %>" mode="Integer" />
</span>
<div class="app-b-title">
<%= successfulWorkFlow %>
</div> </div>
</oneit:button> </oneit:button>
</div> </div>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
AppSortOption appSortOpt = (AppSortOption) getData(request, "SortOption"); AppSortOption appSortOpt = (AppSortOption) getData(request, "SortOption");
WorkFlowStage workFlowStage = (WorkFlowStage) getData(request, "WorkFlowStage"); WorkFlowStage workFlowStage = (WorkFlowStage) getData(request, "WorkFlowStage");
StageType stageType = (StageType) getData(request, "StageType"); StageType stageType = (StageType) getData(request, "StageType");
boolean isDraft = stageType == StageType.INCOMPLETE; boolean isDraft = stageType == StageType.INITIAL;
ApplicationFilter appFilter = (ApplicationFilter) getData(request, "ApplicationFilter"); ApplicationFilter appFilter = (ApplicationFilter) getData(request, "ApplicationFilter");
Boolean showOrderBy = getData(request, "ShowOrderBy")!= null ? (Boolean) getData(request, "ShowOrderBy") : Boolean.FALSE; Boolean showOrderBy = getData(request, "ShowOrderBy")!= null ? (Boolean) getData(request, "ShowOrderBy") : Boolean.FALSE;
AppView appView = (AppView) getData(request,"AppView"); AppView appView = (AppView) getData(request,"AppView");
...@@ -50,6 +50,10 @@ ...@@ -50,6 +50,10 @@
el: '#app', el: '#app',
data: <%= Utils.getApplicantSortingData(searchApplicant)%> data: <%= Utils.getApplicantSortingData(searchApplicant)%>
}); });
$(".switch input[type='checkbox']").change(function() {
$("button[name$='search']").click();
});
}); });
function enableBulkEdit() { function enableBulkEdit() {
...@@ -83,36 +87,31 @@ ...@@ -83,36 +87,31 @@
.toMap() %>" /> .toMap() %>" />
</div> </div>
<% <%
if(!(CollectionUtils.equals(stageType, StageType.INCOMPLETE) && hiringTeam.isTrue(hiringTeam.getOnTrial()))) if(hiringTeam.isFalse(hiringTeam.getOnTrial()))
{ {
%> %>
<div class="appli-filter"> <div class="appli-filter">
<% <ul class="">
if(!CollectionUtils.equals(stageType, StageType.INCOMPLETE)) <li class="lable-appli-shorting">View</li>
{ <li class="<%= (appView == AppView.LIST ? "active" : "" ) + " short-list"%>">
%> <oneit:button value="List" name="gotoPage" skin="link"
<ul class=""> requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
<li class="lable-appli-shorting">View</li> .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("AppView", AppView.LIST).toMap())
<li class="<%= (appView == AppView.LIST ? "active" : "" ) + " short-list"%>"> .toMap() %>"/>
<oneit:button value="List" name="gotoPage" skin="link" </li>
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage) <li class="<%= (appView == AppView.GRID ? "active" : "" ) + " grid-list"%>">
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("AppView", AppView.LIST).toMap()) <oneit:button value="Grid" name="gotoPage" skin="link"
.toMap() %>"/> requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
</li> .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("AppView", AppView.GRID).toMap())
<li class="<%= (appView == AppView.GRID ? "active" : "" ) + " grid-list"%>"> .toMap() %>"/>
<oneit:button value="Grid" name="gotoPage" skin="link" </li>
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage) <li class="<%= (appView == AppView.DETAILED_GRID ? "active" : "" ) + " detailed-grid-list"%>">
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("AppView", AppView.GRID).toMap()) <oneit:button value="Detailed Grid" name="gotoPage" skin="link"
.toMap() %>"/> requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
</li> .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("AppView", AppView.DETAILED_GRID).toMap())
<li class="<%= (appView == AppView.DETAILED_GRID ? "active" : "" ) + " detailed-grid-list"%>"> .toMap() %>"/>
<oneit:button value="Detailed Grid" name="gotoPage" skin="link" </li>
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage) </ul>
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("AppView", AppView.DETAILED_GRID).toMap())
.toMap() %>"/>
</li>
</ul>
<% } %>
</div> </div>
<div class="shorting-dropdown application_sorting_bar"> <div class="shorting-dropdown application_sorting_bar">
<div class="appli-order-label">Search Applicants</div> <div class="appli-order-label">Search Applicants</div>
...@@ -160,9 +159,18 @@ ...@@ -160,9 +159,18 @@
} }
%> %>
</div> </div>
<div class="checkbox-list select-all"> <div class="checkbox-list select-all pull-left">
<input type='checkbox' id='select_all' value='select_all' class='norecalc'> <input type='checkbox' id='select_all' value='select_all' class='norecalc'>
<label for="select_all" class="select-all-jobs">&nbsp;&nbsp;Select all applicants</label> <label for="select_all" class="select-all-jobs">&nbsp;&nbsp;Select all applicants</label>
</div> </div>
<div class="pull-right">
<label class="show-incomplete pull-left">Show Incomplete</label>
<label class="switch">
<oneit:recalcClass htmlTag="span" classScript="searchApplicant.getShowIncomplete() ? 'checkbox checked': 'checkbox unchecked'" searchApplicant="<%= searchApplicant %>">
<oneit:ormInput obj="<%= searchApplicant %>" attributeName="ShowIncomplete" type="checkbox"/>
</oneit:recalcClass>
<div class="slider round"></div>
</label>
</div>
</div> </div>
</oneit:dynIncluded> </oneit:dynIncluded>
...@@ -140,8 +140,6 @@ ...@@ -140,8 +140,6 @@
for(Job job: jobs) for(Job job: jobs)
{ {
int shortlisted = job.getNoOfCandidatesFor(job.getWorkFlowByStageType(StageType.SUCCESSFUL));
int maxShortlist = job.getMaxShortlistApplicants();
String editJobPage = nextPage; String editJobPage = nextPage;
// go to edit job if job is in draft status // go to edit job if job is in draft status
...@@ -267,29 +265,10 @@ ...@@ -267,29 +265,10 @@
<div class="ja-icon"> <div class="ja-icon">
<div class="conic-circle"> <div class="conic-circle">
<p style="display:none;"> <p style="display:none;">
<oneit:toString value="<%= shortlisted * (100 / maxShortlist) %>" mode="PercentageWholeNumber" /> <oneit:toString value="<%= 10 %>" mode="PercentageWholeNumber" />
</p> </p>
<%
if(shortlisted == maxShortlist)
{
%>
<img src="images/stroke-3.svg" class="right-mark-img" />
<%
}
%>
</div> </div>
</div> </div>
<div class="ja-count">
<oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ApplicationStatus", StageType.INTERVIEW).toMap())
.toMap() %>" disabled="<%= job.getJobStatus() == JobStatus.DRAFT ? "true" : "false" %>">
<oneit:toString value="<%= shortlisted %>" mode="Integer" nullValue="0"/>
</oneit:button>
/
<oneit:toString value="<%= maxShortlist %>" mode="Integer" nullValue="0"/>
<span class="grey-span">successful</span>
</div>
</div> </div>
</div> </div>
<div class="job-states jl-c wider-select"> <div class="job-states jl-c wider-select">
......
...@@ -82,6 +82,9 @@ ...@@ -82,6 +82,9 @@
<oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" /> <oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
</div> </div>
</div> </div>
<div class="appli-message appli-l eq-second-height">
<div class="ja-icon"><img src="images/job-list-user.svg"></div>
</div>
<% <%
String widthClass = (job.showAssessmentCriteriaSection() && job.showCultureCriteriaSection()) ? "appli-jcs" : String widthClass = (job.showAssessmentCriteriaSection() && job.showCultureCriteriaSection()) ? "appli-jcs" :
(job.showAssessmentCriteriaSection() || job.showCultureCriteriaSection()) ? "appli-jcs2" : "appli-jcs3"; (job.showAssessmentCriteriaSection() || job.showCultureCriteriaSection()) ? "appli-jcs2" : "appli-jcs3";
...@@ -129,7 +132,7 @@ ...@@ -129,7 +132,7 @@
</div> </div>
</div> </div>
<span class="<%= missingReq ? "missing-requirements-icon" : "requirements-correct-icon" %>"></span> <span class="<%= missingReq ? "missing-requirements-icon" : criteriaVal == 100 ? "requirements-correct-icon" : ""%>"></span>
</span> </span>
<span class="<%= missingReq ? "red-requirements" : "" %>"> <span class="<%= missingReq ? "red-requirements" : "" %>">
requirements requirements
......
...@@ -82,9 +82,7 @@ ...@@ -82,9 +82,7 @@
workFlowStage = (WorkFlowStage) process.getAttribute("WorkFlowStage"); workFlowStage = (WorkFlowStage) process.getAttribute("WorkFlowStage");
} }
StageType stageType = workFlowStage != null ? workFlowStage.getStageType() : null; StageType stageType = workFlowStage != null ? workFlowStage.getStageType() : null;
boolean isApplicantPage = workFlowStage == null;
boolean isDraftPage = stageType == StageType.INCOMPLETE;
// handle application filter (showing dropdown) // handle application filter (showing dropdown)
if(parameterMap.containsKey("ApplicationFilter") && !request.getParameter("ApplicationFilter").isEmpty()) if(parameterMap.containsKey("ApplicationFilter") && !request.getParameter("ApplicationFilter").isEmpty())
...@@ -101,15 +99,14 @@ ...@@ -101,15 +99,14 @@
} }
List<JobApplication> applicantList = Arrays.asList(applications); List<JobApplication> applicantList = Arrays.asList(applications);
// WorkFlowStage workflow = job.getWorkFlowByStageType(stageType);
// filter applicants by status // filter applicants by status
oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andWorkFlowStage(new EqualsFilter<>(workFlowStage)); oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andWorkFlowStage(new EqualsFilter<>(workFlowStage));
oneit.utils.filter.Filter<JobApplication> applicantFilter = JobApplication.SearchByAll().andWorkFlowStage(new NotInFilter<>(job.getIncompleteApplicantStages()));
oneit.utils.filter.Filter<JobApplication> draftFilter = JobApplication.SearchByAll().andWorkFlowStage(new InFilter<>(job.getIncompleteApplicantStages()));
// if Applicant Status, then show all application completed applicants if(workFlowStage != null)
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, isDraftPage ? draftFilter : (isApplicantPage ? applicantFilter : filter))); {
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, filter));
}
if(appFilter != ApplicationFilter.ALL_APPLICATIONS) if(appFilter != ApplicationFilter.ALL_APPLICATIONS)
{ {
...@@ -121,7 +118,7 @@ ...@@ -121,7 +118,7 @@
session.setAttribute("AppView", (AppView) process.getAttribute("AppView")); session.setAttribute("AppView", (AppView) process.getAttribute("AppView"));
} }
AppView appView = (session.getAttribute("AppView") != null && !CollectionUtils.equals(stageType,StageType.INCOMPLETE))? (AppView) session.getAttribute("AppView") : AppView.LIST; AppView appView = (session.getAttribute("AppView") != null && !CollectionUtils.equals(stageType,StageType.INITIAL))? (AppView) session.getAttribute("AppView") : AppView.LIST;
List<JobApplication> sortedApplications = Utils.getApplicationsSorted(applicantList, appSortOpt); List<JobApplication> sortedApplications = Utils.getApplicationsSorted(applicantList, appSortOpt);
process.setAttribute("AppSortOption", appSortOpt); process.setAttribute("AppSortOption", appSortOpt);
...@@ -154,27 +151,13 @@ ...@@ -154,27 +151,13 @@
<% <%
if(appView == AppView.LIST) if(appView == AppView.LIST)
{ {
if(stageType == StageType.INCOMPLETE)
{
%> %>
<oneit:dynInclude page="/extensions/adminportal/inc/incomplete_applicants_list.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_list.jsp"
applications="<%= sortedApplications %>" applications="<%= sortedApplications %>"
currentPage="<%= currentPage %>" currentPage="<%= currentPage %>"
StageType="<%= stageType %>" StageType="<%= stageType %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<%
}
else
{
%>
<oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_list.jsp"
applications="<%= sortedApplications %>"
currentPage="<%= currentPage %>"
StageType="<%= stageType %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<% <%
}
} }
else if(appView == AppView.GRID) else if(appView == AppView.GRID)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment