Commit f65a96d5 by Nilu Committed by Harsh Shah

HT003 HT005

Bulk Update - Enable drop only when one or more rows is checked/selected

Bulk Update - "remove from Shortlist" (which of course would only apply that update to those applicants who have been shortlisted)
parent 291b4add
package performa.form;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import oneit.logging.LogLevel;
import oneit.logging.LogMgr;
import oneit.objstore.StorageException;
import oneit.objstore.utils.ObjstoreUtils;
import oneit.servlets.forms.SubmissionDetails;
import oneit.servlets.forms.SuccessfulResult;
import oneit.servlets.process.ORMProcessState;
import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException;
import performa.orm.Job;
import performa.orm.JobApplication;
import performa.orm.types.AppProcessOption;
import performa.orm.types.ApplicationStatus;
public class BulkUpdateFP extends SaveFP
{
@Override
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
HttpServletRequest request = submission.getRequest();
List<JobApplication> applications = ObjstoreUtils.getActioned(request, "IsSelected", process.getTransaction(), JobApplication.REFERENCE_JobApplication);
Job job = (Job) request.getAttribute("Job");
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In BulkUpdateFP selected application count : ", applications != null ? applications.size() : 0 , " of job ", job);
for(JobApplication application : applications)
{
if(job.getAppProcessOption() == AppProcessOption.TO_SHORTLIST)
{
application.setApplicationStatus(ApplicationStatus.SHORTLISTED);
}
else if(job.getAppProcessOption() == AppProcessOption.REMOVE_FROM_SHORTLIST)
{
application.setApplicationStatus(ApplicationStatus.SUBMITTED);
}
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In BulkUpdateFP Job Application Status successfully changed : ", application );
}
return super.processForm(process, submission, params);
}
}
......@@ -327,4 +327,18 @@ public class Job extends BaseJob
{
return getApplyBy() != null && DateDiff.endOfDay(getApplyBy()).before(DateDiff.getToday());
}
public List<AppProcessOption> getValidProcessOptions(String tabNumber)
{
List<AppProcessOption> options = new ArrayList<>();
if(tabNumber == null)
{
options.add(AppProcessOption.TO_SHORTLIST);
}
options.add(AppProcessOption.REMOVE_FROM_SHORTLIST);
return options;
}
}
\ No newline at end of file
......@@ -19,6 +19,7 @@
<TRANSIENT name="SaveCultureTemplate" type="Boolean" defaultValue="Boolean.FALSE"/>
<TRANSIENT name="AssessmentTemplateName" type="String"/>
<TRANSIENT name="CultureTemplateName" type="String"/>
<TRANSIENT name="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/>
<TRANSIENTSINGLE name="AssessmentTemplate" type="AssessmentCriteriaTemplate" />
<TRANSIENTSINGLE name="CultureTemplate" type="CultureCriteriaTemplate" />
......
......@@ -9,7 +9,6 @@
<MULTIPLEREFERENCE name="CultureCriteriaAnswers" type="CultureCriteriaAnswer" backreferenceName="JobApplication" />
<MULTIPLEREFERENCE name="ProfileAssessmentAnswers" type="Answer" backreferenceName="JobApplication" />
<TRANSIENT name="IsSelected" type="Boolean" defaultValue="Boolean.FALSE"/>
<TRANSIENT name="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/>
<TRANSIENT name="OverallSuitability" type="Integer"/>
......
......@@ -3419,7 +3419,7 @@ input.add-note-btn:hover{
}
.appli-shorting-dropdown{
float: right;
width: 120px;
width: 200px;
margin-left: 50px;
position: relative;
z-index: 10;
......@@ -3469,7 +3469,7 @@ input.add-note-btn:hover{
.appli-checkbox {
text-align: center;
width: 44px;
padding: 26px 0 5px;
padding: 15px 5px;
}
.appli-list-name {
color: #4a4a4a;
......@@ -3516,7 +3516,7 @@ input.add-note-btn:hover{
}
.appli-list-drop{
float: left;
width: 160px;
width: 200px;
}
.person-status {
float: left;
......@@ -3617,7 +3617,7 @@ span.right-img {
left: 0;
top: 0;
padding-top: 2px;
padding-left: 7px;
padding-left: 8px;
font-size: 11px;
color: #555555;
}
......
......@@ -29,6 +29,7 @@
<FORM name="*.loadRequirementsFromTemplate" factory="Participant" class="performa.form.LoadRequirementsFromTemplateFP"/>
<FORM name="*.loadCultureFromTemplate" factory="Participant" class="performa.form.LoadCultureFromTemplateFP"/>
<FORM name="*.changeApplicationStatus" factory="Participant" class="performa.form.ChangeApplicationStatusFP"/>
<FORM name="*.bulkupdate" factory="Participant" class="performa.form.BulkUpdateFP"/>
</NODE>
<NODE name="job_assessment_criteria_add_jsp" factory="Participant">
......
......@@ -31,14 +31,13 @@
String jobMatch = FormatUtils.stringify(jobApplication.getJobMatchPercentage(), "PercentageWholeNumber", "0");
String culture = FormatUtils.stringify(jobApplication.getCulturePercentage(), "PercentageWholeNumber", "0");
String criteria = FormatUtils.stringify(jobApplication.getCriteriaPercentage(), "PercentageWholeNumber", "0");
String appID = "app-id-" + jobApplication.getID().toString();
%>
<div class="appli-row" id="<%= jobApplication.getID() %>">
<div class="appli-checkbox appli-l eq-second-height">
<div class="checkbox-list">
<oneit:ormInput obj="<%= jobApplication %>" id="<%= jobApplication.getID().toString()%>" attributeName="IsSelected" type="checkbox"/>
<oneit:recalcClass htmlTag="span" classScript="jobApplication.getIsSelected() != null && jobApplication.getIsSelected() ? 'checked': 'unchecked'" jobApplication="<%= jobApplication %>">
<label for="<%= jobApplication.getID().toString()%>"/>
</oneit:recalcClass>
<input type="checkbox" name="IsSelected" value="<%= jobApplication.getObjectID().toString() %>" id="<%= appID %>" class="applicant" >
<label for="<%= appID %>"></label>
</div>
</div>
<div class="appli-list-name appli-l eq-second-height">
......
......@@ -11,18 +11,41 @@
AppSortOption appSortOpt = (AppSortOption) getData(request, "sortOption");
String tabNumber = (String) getData(request, "tabNumber");
Boolean expand = getData(request, "expand")!=null ? (Boolean) getData(request, "expand") : Boolean.FALSE;
%>
<oneit:dynIncluded>
<script type="text/javascript">
$(document).ready(function()
{
$(".bullk-app-process").change(function()
{
$('.bulk-update').click();
});
enableBulkEdit();
$(".applicant").change(function() {
enableBulkEdit();
});
});
function enableBulkEdit() {
$(".bullk-app-process").prop("disabled",$('input[class=applicant]:checked').length===0);
}
</script>
<div class="main-applicants-filter">
<div class="appli-list-shorting">
<div class="appli-shorting-dropdown appli-left">
<span class="appli-order-label">Bulk Update</span>
<select class="form-control">
<option>To Shortlist</option>
</select>
<oneit:ormEnum obj="<%= job %>" attributeName="AppProcessOption" cssClass="form-control bullk-app-process"
enums="<%= job.getValidProcessOptions(tabNumber) %>"/>
<oneit:button name="bulkupdate" value=" " cssClass="bulk-update" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage)
.mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry ("attribNamesToRestore", Collections.singleton("Job"))
.mapEntry("Job", job)
.toMap() %>" />
</div>
<%
if(tabNumber != null)
......@@ -52,7 +75,6 @@
<select class="form-control">
<option>PDF</option>
<option>CSV</option>
<option>XML</option>
</select>
</div>
<%
......
......@@ -54,10 +54,6 @@
{
recalcFunction = setupRecalc ($("form"), {'recalcOnError':true});
});
function gotoEditApplication (id) {
$('.' + id).click();
}
</script>
<oneit:form name="viewApplicants" method="post" enctype="multipart/form-data">
......
......@@ -102,6 +102,9 @@
recalcFunction = setupRecalc ($("form"), {'recalcOnError':true});
});
function gotoEditApplication (id) {
$('.' + id).click();
}
</script>
<oneit:form name="viewApplicants" method="post" enctype="multipart/form-data">
......@@ -131,7 +134,7 @@
{
%>
<div class="appl-c-box application-row" onClick='gotoEditApplication("<%= jobApplication.getID() %>")'>
<oneit:button value="EDIT" name="gotoPage" cssClass="<%= jobApplication.getID() + " hidden"%>" skin="link"
<oneit:button value=" " name="gotoPage" cssClass="<%= jobApplication.getID() + " hidden"%>" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"/>
......@@ -206,17 +209,18 @@
for(JobApplication jobApplication : sortedApplications)
{
String appID = "app-id-" + jobApplication.getID().toString();
%>
<div class="<%= "appl-c-box " + (i == 0 ? " cb-one" : "")%> ">
<div class="<%= "appl-c-box " + (i == 0 ? " cb-one" : "")%> " onClick='gotoEditApplication("<%= jobApplication.getID() %>")'>
<!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this-->
<div class="<%= "cb-title " + (i == 0 ? "green-back" : (i < 3 ? "blue-back" : "dark-back" ))%> ">
<div class="checkbox-list grid-checkbox">
<oneit:ormInput obj="<%= jobApplication %>" id="<%= jobApplication.getID().toString()%>" attributeName="IsSelected" type="checkbox"/>
<oneit:recalcClass htmlTag="span" classScript="jobApplication.getIsSelected() != null && jobApplication.getIsSelected() ? 'checked': 'unchecked'" jobApplication="<%= jobApplication %>">
<label for="<%= jobApplication.getID().toString()%>">
<div class="checkbox-list">
<input type="checkbox" name="IsSelected" value="<%= jobApplication.getObjectID().toString() %>" id="<%= appID %>" class="applicant" >
<label for="<%= appID %>">
<oneit:toString value="<%= jobApplication.getCandidate() %>" mode="EscapeHTML" />
</label>
</oneit:recalcClass>
</div>
</div>
</div>
<div class="overall-suitablity grid-suitability">
......
......@@ -54,10 +54,6 @@
{
recalcFunction = setupRecalc ($("form"), {'recalcOnError':true});
});
function gotoEditApplication (id) {
$('.' + id).click();
}
</script>
<oneit:form name="viewApplicants" method="post" enctype="multipart/form-data">
......
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