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
...@@ -41,6 +41,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -41,6 +41,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
public static final String FIELD_Details = "Details"; public static final String FIELD_Details = "Details";
public static final String FIELD_Filter = "Filter"; public static final String FIELD_Filter = "Filter";
public static final String FIELD_ShowIncomplete = "ShowIncomplete";
public static final String SINGLEREFERENCE_Job = "Job"; public static final String SINGLEREFERENCE_Job = "Job";
// Static constants corresponding to searches // Static constants corresponding to searches
...@@ -49,11 +50,13 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -49,11 +50,13 @@ public abstract class BaseSearchApplicant extends SearchExecutor
// Static constants corresponding to attribute helpers // Static constants corresponding to attribute helpers
private static final DefaultAttributeHelper<SearchApplicant> HELPER_Details = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<SearchApplicant> HELPER_Details = DefaultAttributeHelper.INSTANCE;
private static final DelimitedEnumsAttributeHelper HELPER_Filter = new DelimitedEnumsAttributeHelper (AppFilter.FACTORY_AppFilter); private static final DelimitedEnumsAttributeHelper HELPER_Filter = new DelimitedEnumsAttributeHelper (AppFilter.FACTORY_AppFilter);
private static final DefaultAttributeHelper<SearchApplicant> HELPER_ShowIncomplete = DefaultAttributeHelper.INSTANCE;
// Private attributes corresponding to business object data // Private attributes corresponding to business object data
private String _Details; private String _Details;
private Set<AppFilter> _Filter; private Set<AppFilter> _Filter;
private Boolean _ShowIncomplete;
// Private attributes corresponding to single references // Private attributes corresponding to single references
...@@ -67,11 +70,13 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -67,11 +70,13 @@ public abstract class BaseSearchApplicant extends SearchExecutor
private static final Map ATTRIBUTES_METADATA_SearchApplicant = new LinkedHashMap (); private static final Map ATTRIBUTES_METADATA_SearchApplicant = new LinkedHashMap ();
// Arrays of validators for each attribute // Arrays of validators for each attribute
private static final AttributeValidator[] FIELD_ShowIncomplete_Validators;
private static final AttributeValidator[] FIELD_Details_Validators; private static final AttributeValidator[] FIELD_Details_Validators;
private static final AttributeValidator[] FIELD_Filter_Validators; private static final AttributeValidator[] FIELD_Filter_Validators;
// Arrays of AttributeDecorators for each attribute // Arrays of AttributeDecorators for each attribute
private static final AttributeDecorator<SearchApplicant, Boolean>[] FIELD_ShowIncomplete_Decorators;
private static final AttributeDecorator<SearchApplicant, String>[] FIELD_Details_Decorators; private static final AttributeDecorator<SearchApplicant, String>[] FIELD_Details_Decorators;
private static final AttributeDecorator<SearchApplicant, Set<AppFilter>>[] FIELD_Filter_Decorators; private static final AttributeDecorator<SearchApplicant, Set<AppFilter>>[] FIELD_Filter_Decorators;
...@@ -95,8 +100,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -95,8 +100,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping")); Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
setupAssocMetaData_Job(); setupAssocMetaData_Job();
FIELD_ShowIncomplete_Validators = (AttributeValidator[])setupAttribMetaData_ShowIncomplete(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_Details_Validators = (AttributeValidator[])setupAttribMetaData_Details(validatorMapping).toArray (new AttributeValidator[0]); FIELD_Details_Validators = (AttributeValidator[])setupAttribMetaData_Details(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_Filter_Validators = (AttributeValidator[])setupAttribMetaData_Filter(validatorMapping).toArray (new AttributeValidator[0]); FIELD_Filter_Validators = (AttributeValidator[])setupAttribMetaData_Filter(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_ShowIncomplete_Decorators = (AttributeDecorator[])AttributeDecoratorUtils.getAttributeDecorators(REFERENCE_SearchApplicant, FIELD_ShowIncomplete).toArray (new AttributeDecorator[0]);
FIELD_Details_Decorators = (AttributeDecorator[])AttributeDecoratorUtils.getAttributeDecorators(REFERENCE_SearchApplicant, FIELD_Details).toArray (new AttributeDecorator[0]); FIELD_Details_Decorators = (AttributeDecorator[])AttributeDecoratorUtils.getAttributeDecorators(REFERENCE_SearchApplicant, FIELD_Details).toArray (new AttributeDecorator[0]);
FIELD_Filter_Decorators = (AttributeDecorator[])AttributeDecoratorUtils.getAttributeDecorators(REFERENCE_SearchApplicant, FIELD_Filter).toArray (new AttributeDecorator[0]); FIELD_Filter_Decorators = (AttributeDecorator[])AttributeDecoratorUtils.getAttributeDecorators(REFERENCE_SearchApplicant, FIELD_Filter).toArray (new AttributeDecorator[0]);
SINGLEREFERENCE_Job_Decorators = (SingleAssocDecorator[])AttributeDecoratorUtils.getSingleAssocDecorators(REFERENCE_SearchApplicant, SINGLEREFERENCE_Job).toArray (new SingleAssocDecorator[0]); SINGLEREFERENCE_Job_Decorators = (SingleAssocDecorator[])AttributeDecoratorUtils.getSingleAssocDecorators(REFERENCE_SearchApplicant, SINGLEREFERENCE_Job).toArray (new SingleAssocDecorator[0]);
...@@ -127,6 +134,23 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -127,6 +134,23 @@ public abstract class BaseSearchApplicant extends SearchExecutor
} }
private static List setupAttribMetaData_ShowIncomplete(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("defaultValue", "Boolean.FALSE");
metaInfo.put ("name", "ShowIncomplete");
metaInfo.put ("type", "Boolean");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for SearchApplicant.ShowIncomplete:", metaInfo);
ATTRIBUTES_METADATA_SearchApplicant.put (FIELD_ShowIncomplete, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(SearchApplicant.class, "ShowIncomplete", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for SearchApplicant.ShowIncomplete:", validators);
return validators;
}
private static List setupAttribMetaData_Details(Map validatorMapping) private static List setupAttribMetaData_Details(Map validatorMapping)
{ {
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
...@@ -188,6 +212,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -188,6 +212,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
_Details = (String)(HELPER_Details.initialise (_Details)); _Details = (String)(HELPER_Details.initialise (_Details));
_Filter = (Set<AppFilter>)(HELPER_Filter.initialise (_Filter)); _Filter = (Set<AppFilter>)(HELPER_Filter.initialise (_Filter));
_ShowIncomplete = (Boolean)(Boolean.FALSE);
} }
...@@ -411,6 +436,106 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -411,6 +436,106 @@ public abstract class BaseSearchApplicant extends SearchExecutor
} }
} }
/**
* Attribute ShowIncomplete
*/
public Boolean getShowIncomplete ()
{
assertValid();
Boolean valToReturn = AttributeDecoratorUtils.getValue (FIELD_ShowIncomplete_Decorators, (SearchApplicant)this, FIELD_ShowIncomplete, _ShowIncomplete);
for (SearchApplicantBehaviourDecorator bhd : SearchApplicant_BehaviourDecorators)
{
valToReturn = bhd.getShowIncomplete ((SearchApplicant)this, valToReturn);
}
return valToReturn;
}
/**
* Called prior to the attribute changing. Subclasses need not call super. If a field exception
* is thrown, the attribute change will fail. The new value is different to the old value.
*/
protected void preShowIncompleteChange (Boolean newShowIncomplete) throws FieldException
{
}
/**
* Called after the attribute changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postShowIncompleteChange () throws FieldException
{
}
public FieldWriteability getWriteability_ShowIncomplete ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute ShowIncomplete. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setShowIncomplete (Boolean newShowIncomplete) throws FieldException
{
newShowIncomplete = AttributeDecoratorUtils.setValue (FIELD_ShowIncomplete_Decorators, (SearchApplicant)this, FIELD_ShowIncomplete, newShowIncomplete);
boolean oldAndNewIdentical = HELPER_ShowIncomplete.compare (_ShowIncomplete, newShowIncomplete);
try
{
for (SearchApplicantBehaviourDecorator bhd : SearchApplicant_BehaviourDecorators)
{
newShowIncomplete = bhd.setShowIncomplete ((SearchApplicant)this, newShowIncomplete);
oldAndNewIdentical = HELPER_ShowIncomplete.compare (_ShowIncomplete, newShowIncomplete);
}
if (FIELD_ShowIncomplete_Validators.length > 0)
{
Object newShowIncompleteObj = HELPER_ShowIncomplete.toObject (newShowIncomplete);
if (newShowIncompleteObj != null)
{
int loopMax = FIELD_ShowIncomplete_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_SearchApplicant.get (FIELD_ShowIncomplete);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_ShowIncomplete_Validators[v].checkAttribute (this, FIELD_ShowIncomplete, metadata, newShowIncompleteObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (AttributeDecoratorUtils.getWriteability (FIELD_ShowIncomplete_Decorators, (SearchApplicant)this, FIELD_ShowIncomplete ,getWriteability_ShowIncomplete ()) != FieldWriteability.FALSE, "Field ShowIncomplete is not writeable");
preShowIncompleteChange (newShowIncomplete);
markFieldChange (FIELD_ShowIncomplete);
_ShowIncomplete = newShowIncomplete;
postFieldChange (FIELD_ShowIncomplete);
postShowIncompleteChange ();
}
}
/** /**
...@@ -831,6 +956,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -831,6 +956,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
_Details = sourceSearchApplicant._Details; _Details = sourceSearchApplicant._Details;
_Filter = sourceSearchApplicant._Filter; _Filter = sourceSearchApplicant._Filter;
_ShowIncomplete = sourceSearchApplicant._ShowIncomplete;
} }
} }
...@@ -886,6 +1012,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -886,6 +1012,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
_Details = (String)(HELPER_Details.readExternal (_Details, vals.get(FIELD_Details))); // _Details = (String)(HELPER_Details.readExternal (_Details, vals.get(FIELD_Details))); //
_Filter = (Set<AppFilter>)(HELPER_Filter.readExternal (_Filter, vals.get(FIELD_Filter))); // _Filter = (Set<AppFilter>)(HELPER_Filter.readExternal (_Filter, vals.get(FIELD_Filter))); //
_ShowIncomplete = (Boolean)(HELPER_ShowIncomplete.readExternal (_ShowIncomplete, vals.get(FIELD_ShowIncomplete))); //
_Job.readExternalData(vals.get(SINGLEREFERENCE_Job)); _Job.readExternalData(vals.get(SINGLEREFERENCE_Job));
} }
...@@ -900,6 +1027,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -900,6 +1027,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
vals.put (FIELD_Details, HELPER_Details.writeExternal (_Details)); vals.put (FIELD_Details, HELPER_Details.writeExternal (_Details));
vals.put (FIELD_Filter, HELPER_Filter.writeExternal (_Filter)); vals.put (FIELD_Filter, HELPER_Filter.writeExternal (_Filter));
vals.put (FIELD_ShowIncomplete, HELPER_ShowIncomplete.writeExternal (_ShowIncomplete));
vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData()); vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData());
} }
...@@ -937,6 +1065,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -937,6 +1065,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
{ {
super.visitAttributes (visitor); super.visitAttributes (visitor);
visitor.visitField(this, FIELD_ShowIncomplete, HELPER_ShowIncomplete.toObject(getShowIncomplete()));
} }
...@@ -1020,6 +1149,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1020,6 +1149,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
{ {
return HELPER_Filter.toObject (getFilter ()); return HELPER_Filter.toObject (getFilter ());
} }
else if (attribName.equals (FIELD_ShowIncomplete))
{
return HELPER_ShowIncomplete.toObject (getShowIncomplete ());
}
else else
{ {
return super.getAttribute (attribName); return super.getAttribute (attribName);
...@@ -1041,6 +1174,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1041,6 +1174,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
{ {
return HELPER_Filter; return HELPER_Filter;
} }
else if (attribName.equals (FIELD_ShowIncomplete))
{
return HELPER_ShowIncomplete;
}
else else
{ {
return super.getAttributeHelper (attribName); return super.getAttributeHelper (attribName);
...@@ -1062,6 +1199,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1062,6 +1199,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
{ {
setFilter ((Set<AppFilter>)(HELPER_Filter.fromObject (_Filter, attribValue))); setFilter ((Set<AppFilter>)(HELPER_Filter.fromObject (_Filter, attribValue)));
} }
else if (attribName.equals (FIELD_ShowIncomplete))
{
setShowIncomplete ((Boolean)(HELPER_ShowIncomplete.fromObject (_ShowIncomplete, attribValue)));
}
else else
{ {
super.setAttribute (attribName, attribValue); super.setAttribute (attribName, attribValue);
...@@ -1104,6 +1245,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1104,6 +1245,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
{ {
return getWriteability_Job (); return getWriteability_Job ();
} }
else if (fieldName.equals (FIELD_ShowIncomplete))
{
return getWriteability_ShowIncomplete ();
}
else else
{ {
return super.getWriteable (fieldName); return super.getWriteable (fieldName);
...@@ -1123,6 +1268,11 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1123,6 +1268,11 @@ public abstract class BaseSearchApplicant extends SearchExecutor
fields.add (FIELD_Filter); fields.add (FIELD_Filter);
} }
if (getWriteability_ShowIncomplete () != FieldWriteability.TRUE)
{
fields.add (FIELD_ShowIncomplete);
}
super.putUnwriteable (fields); super.putUnwriteable (fields);
} }
...@@ -1141,6 +1291,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1141,6 +1291,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
result.add(HELPER_Details.getAttribObject (getClass (), _Details, false, FIELD_Details)); result.add(HELPER_Details.getAttribObject (getClass (), _Details, false, FIELD_Details));
result.add(HELPER_Filter.getAttribObject (getClass (), _Filter, false, FIELD_Filter)); result.add(HELPER_Filter.getAttribObject (getClass (), _Filter, false, FIELD_Filter));
result.add(HELPER_ShowIncomplete.getAttribObject (getClass (), _ShowIncomplete, false, FIELD_ShowIncomplete));
return result; return result;
} }
...@@ -1234,6 +1385,24 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1234,6 +1385,24 @@ public abstract class BaseSearchApplicant extends SearchExecutor
return newFilter; return newFilter;
} }
/**
* Get the attribute ShowIncomplete
*/
public Boolean getShowIncomplete (SearchApplicant obj, Boolean original)
{
return original;
}
/**
* Change the value set for attribute ShowIncomplete.
* May modify the field beforehand
* Occurs before validation.
*/
public Boolean setShowIncomplete (SearchApplicant obj, Boolean newShowIncomplete) throws FieldException
{
return newShowIncomplete;
}
} }
@Override @Override
...@@ -1292,6 +1461,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1292,6 +1461,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
public PipeLine<From, ? extends Object> to(String name) public PipeLine<From, ? extends Object> to(String name)
{ {
if (name.equals ("ShowIncomplete"))
{
return toShowIncomplete ();
}
if (name.equals ("Details")) if (name.equals ("Details"))
{ {
return toDetails (); return toDetails ();
...@@ -1310,6 +1483,8 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1310,6 +1483,8 @@ public abstract class BaseSearchApplicant extends SearchExecutor
} }
public PipeLine<From, Boolean> toShowIncomplete () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_ShowIncomplete)); }
public PipeLine<From, String> toDetails () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Details)); } public PipeLine<From, String> toDetails () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Details)); }
public PipeLine<From, Set<AppFilter>> toFilter () { return pipe(new ORMAttributePipe<Me, Set<AppFilter>>(FIELD_Filter)); } public PipeLine<From, Set<AppFilter>> toFilter () { return pipe(new ORMAttributePipe<Me, Set<AppFilter>>(FIELD_Filter)); }
...@@ -1325,6 +1500,11 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1325,6 +1500,11 @@ public abstract class BaseSearchApplicant extends SearchExecutor
public boolean isTransientAttrib(String attribName) public boolean isTransientAttrib(String attribName)
{ {
if(CollectionUtils.equals(attribName, "ShowIncomplete"))
{
return true;
}
return super.isTransientAttrib(attribName); return super.isTransientAttrib(attribName);
} }
......
...@@ -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