Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
PERFORMA_REPLICA
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Muhammad Usman
PERFORMA_REPLICA
Commits
d3c9a37b
Commit
d3c9a37b
authored
Nov 07, 2018
by
Nilu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
applicant grid and list pdf
parent
3c3fd670
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
359 additions
and
9 deletions
+359
-9
ApplicantReportFP.java
cmsWebApp/src/performa/form/ApplicantReportFP.java
+27
-1
PDFUtils.java
cmsWebApp/src/performa/utils/PDFUtils.java
+10
-4
applicant_view_tabs.jsp
...ebroot/extensions/adminportal/inc/applicant_view_tabs.jsp
+6
-3
applicants_grid_report.jsp
...oot/extensions/adminportal/inc/applicants_grid_report.jsp
+106
-0
applicants_grid_report_header.jsp
...ensions/adminportal/inc/applicants_grid_report_header.jsp
+42
-0
applicants_list_report.jsp
...oot/extensions/adminportal/inc/applicants_list_report.jsp
+124
-0
applicants_list_report_header.jsp
...ensions/adminportal/inc/applicants_list_report_header.jsp
+35
-0
job_title_bar.jsp
...bApp/webroot/extensions/adminportal/inc/job_title_bar.jsp
+7
-1
view_applicants.jsp
cmsWebApp/webroot/extensions/adminportal/view_applicants.jsp
+2
-0
No files found.
cmsWebApp/src/performa/form/ApplicantReportFP.java
View file @
d3c9a37b
package
performa
.
form
;
import
java.util.List
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -10,7 +11,9 @@ import oneit.servlets.portability.FileDownloader;
import
oneit.servlets.process.ORMProcessFormProcessor
;
import
oneit.servlets.process.ORMProcessState
;
import
oneit.utils.BusinessException
;
import
oneit.utils.CollectionUtils
;
import
oneit.utils.RandomStringGen
;
import
performa.orm.JobApplication
;
import
performa.utils.PDFUtils
;
...
...
@@ -22,9 +25,32 @@ public class ApplicantReportFP extends ORMProcessFormProcessor
throws
BusinessException
,
StorageException
{
HttpServletRequest
request
=
submission
.
getRequest
();
RandomStringGen
rand
=
new
RandomStringGen
();
final
String
randFileName
=
rand
.
generateAlphaNum
(
16
)
+
".pdf"
;
final
byte
[]
pdfBytes
=
PDFUtils
.
generateApplicantReportSummaryPDF
(
submission
);
boolean
showList
=
(
boolean
)
request
.
getAttribute
(
"ShowList"
);
boolean
applicantPage
=
(
boolean
)
request
.
getAttribute
(
"ApplicantPage"
);
List
<
JobApplication
>
applications
=
(
List
<
JobApplication
>)
request
.
getAttribute
(
"Applications"
);
final
byte
[]
pdfBytes
;
if
(
CollectionUtils
.
equals
(
applicantPage
,
true
))
{
pdfBytes
=
PDFUtils
.
generateApplicantReportSummaryPDF
(
submission
);
}
else
{
Map
data
=
CollectionUtils
.
mapEntry
(
"Applications"
,
applications
).
toMap
();
if
(
CollectionUtils
.
equals
(
showList
,
true
))
{
pdfBytes
=
PDFUtils
.
generateApplicantsListPDF
(
submission
,
data
);
}
else
{
pdfBytes
=
PDFUtils
.
generateApplicantsGridPDF
(
submission
,
data
);
}
}
return
new
SuccessfulResult
()
{
...
...
cmsWebApp/src/performa/utils/PDFUtils.java
View file @
d3c9a37b
...
...
@@ -69,8 +69,13 @@ public class PDFUtils
return
generatePDF
(
submission
,
"/extensions/adminportal/inc/applicant_report.jsp"
,
"/extensions/adminportal/inc/applicant_report_header.jsp"
,
null
);
}
// public static byte[] generateApplicantsListPDF(SubmissionDetails submission, Map otherData) throws BusinessException
// {
// return generatePDF(submission, "/extensions/adminportal/inc/applicants_list_report.jsp", "/extensions/adminportal/inc/applicants_list_report_header.jsp", null, otherData);
// }
public
static
byte
[]
generateApplicantsListPDF
(
SubmissionDetails
submission
,
Map
otherData
)
throws
BusinessException
{
return
generatePDF
(
submission
,
"/extensions/adminportal/inc/applicants_list_report.jsp"
,
"/extensions/adminportal/inc/applicants_list_report_header.jsp"
,
null
,
otherData
);
}
public
static
byte
[]
generateApplicantsGridPDF
(
SubmissionDetails
submission
,
Map
otherData
)
throws
BusinessException
{
return
generatePDF
(
submission
,
"/extensions/adminportal/inc/applicants_grid_report.jsp"
,
"/extensions/adminportal/inc/applicants_grid_report_header.jsp"
,
null
,
otherData
);
}
}
\ No newline at end of file
cmsWebApp/webroot/extensions/adminportal/inc/applicant_view_tabs.jsp
View file @
d3c9a37b
...
...
@@ -7,9 +7,10 @@
<%
Job job = (Job) process.getAttribute("Job");
ApplicationStatus appStatus = (ApplicationStatus) getData(request, "WorkFlowStatus");
boolean showList = (boolean) getData(request, "ShowList");
String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
// String secondTab = WebUtils.getSamePageInRenderMode(request, WebUtils.APPLICANTS_SHORTLIST
);
// String thirdTab = WebUtils.getSamePageInRenderMode(request, WebUtils.UNSUITABLE_APPS);
List<JobApplication> applications = (List<JobApplication>) getData(request, "applications"
);
int noOfIncomplete = job.getNoOfCandidatesFor(ApplicationStatus.DRAFT);
int noOfUnsuitable = job.getNoOfCandidatesFor(ApplicationStatus.UNSUITABLE);
%>
...
...
@@ -20,7 +21,9 @@
<div class="first-part">
<oneit:dynInclude page="/extensions/adminportal/inc/job_title_bar.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"
applicantPage="<%= false %>"/>
applicantPage="<%= false %>"
applications="<%= applications %>"
ShowList="<%= showList %>"/>
<div class="int-timeline">
<ul>
<li class="<%= "incomplete " + (noOfIncomplete > 0 ? "has-applicant" : "no-applicant") %> <%= appStatus == ApplicationStatus.DRAFT ? "active" : "inactive" %>">
...
...
cmsWebApp/webroot/extensions/adminportal/inc/applicants_grid_report.jsp
0 → 100644
View file @
d3c9a37b
<%@ page extends="oneit.servlets.jsp.JSPInclude"%>
<%@ taglib prefix="tagfile" tagdir="/WEB-INF/tags"%>
<%@ include file="/setuprequest.jsp"%>
<%@ page import="oneit.servlets.process.*"%>
<%@ page import="oneit.objstore.*, oneit.utils.*, oneit.utils.text.*"%>
<%@ page import="java.util.*"%>
<%@ page import="performa.orm.*, performa.orm.types.*, performa.chart.*, performa.utils.*"%>
<%
ORMProcessState process = (ORMProcessState) ProcessDecorator.getDefaultProcess(request);
ObjectTransaction objTran = process.getTransaction();
Job job = (Job) process.getAttribute("Job");
List<JobApplication> applications = (List<JobApplication>) getData(request, "Applications");
%>
<oneit:dynIncluded>
<div class="wrap">
<div class="header">
<div class="chief-officer">
<oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML" />
<%
if(job.getReferenceNumber() != null)
{
%>
(<oneit:toString value="<%= job.getReferenceNumber() %>" mode="EscapeHTML" />)
<%
}
%>
</div>
<div class="by-name">
<span>
<%
if(job.isClientAvailable())
{
%>
<oneit:toString value="<%= job.getClient() %>" mode="EscapeHTML" />
<%
}
%>
</span> by <oneit:toString value="<%= job.getCreatedBy() %>" mode="EscapeHTML" nullValue=""/>
<oneit:toString value="<%= job.getLevel() %>" mode="EscapeHTML" />
</div>
</div>
<div class="white-header">
All Applicants
<span><%= applications.size() %> Applicants</span>
</div>
<%
for (JobApplication jobApplication : applications)
{
String roleFit = FormatUtils.stringify(jobApplication.getRoleFitPercentage(), "PercentageWholeNumber", "0");
String culture = FormatUtils.stringify(jobApplication.getCultureFitScore(), "PercentageWholeNumber", "0");
Integer overallRank = jobApplication.getOverallRank();
boolean missingReq = jobApplication.hasFailedEssentialRequirements();
%>
<div class="appl-c-box">
<div class="gridbox">
<div class="gridbox-applicant">
<oneit:toString value="<%= jobApplication.getCandidate() %>" mode="EscapeHTML" />
</div>
</div>
<div class="overall-suitablity">
<div class="overall">overall rank</div>
<div class="over-all-rank">
<oneit:toString value="<%= overallRank %>" mode="Integer" />
</div>
</div>
<div class="jcc-box">
<div class="job-match jcc">
<img src="images/app-job-match-icon.png"> role fit
<span>
<oneit:toString value="<%= jobApplication.getRoleFitPercentage() %>" mode="PercentageWholeNumber" />
</span>
</div>
<div class="culture jcc">
<img src="images/culture-icon.png"> culture fit
<span>
<oneit:toString value="<%= jobApplication.getCultureFitScore() %>" mode="PercentageWholeNumber" />
</span>
</div>
<%
if(job.getIncludeAssessmentCriteria()==Boolean.TRUE)
{
%>
<div class="criteria jcc <%=(missingReq ? "red-bg" : "green-bg")%> ">
<img src="images/<%=(missingReq ? "icon-requirements_small.png" : "critarea_white.png")%>"> requirements
<span>
<oneit:toString value="<%= jobApplication.getRequirementFitScore() %>" mode="PercentageWholeNumber" />
</span>
</div>
<%
}
%>
</div>
</div>
<%
}
%>
</div>
</oneit:dynIncluded>
\ No newline at end of file
cmsWebApp/webroot/extensions/adminportal/inc/applicants_grid_report_header.jsp
0 → 100644
View file @
d3c9a37b
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@include file="../../../setuprequest.jsp" %>
<oneit:dynIncluded>
<style type="text/css" media="print,screen" >
/*@import url("//hello.myfonts.net/count/343a83");*/
@font-face {font-family: 'Usual-Bold';src: url('../../../fonts/343A83_0_0.eot');src: url('../../../fonts/343A83_0_0.eot?#iefix') format('embedded-opentype'),url('../../../fonts/343A83_0_0.woff2') format('woff2'),url('../../../fonts/343A83_0_0.woff') format('woff'),url('../../../fonts/343A83_0_0.ttf') format('truetype');}
@font-face {font-family: 'Usual-Light';src: url('../../../fonts/343A83_1_0.eot');src: url('../../../fonts/343A83_1_0.eot?#iefix') format('embedded-opentype'),url('../../../fonts/343A83_1_0.woff2') format('woff2'),url('../../../fonts/343A83_1_0.woff') format('woff'),url('../../../fonts/343A83_1_0.ttf') format('truetype');}
@font-face {font-family: 'Usual-Medium';src: url('../../../fonts/343A83_2_0.eot');src: url('../../../fonts/343A83_2_0.eot?#iefix') format('embedded-opentype'),url('../../../fonts/343A83_2_0.woff2') format('woff2'),url('../../../fonts/343A83_2_0.woff') format('woff'),url('../../../fonts/343A83_2_0.ttf') format('truetype');}
@font-face {font-family: 'Usual-Regular';src: url('../../../fonts/343A83_3_0.eot');src: url('../../../fonts/343A83_3_0.eot?#iefix') format('embedded-opentype'),url('../../../fonts/343A83_3_0.woff2') format('woff2'),url('../../../fonts/343A83_3_0.woff') format('woff'),url('../../../fonts/343A83_3_0.ttf') format('truetype');}
div.header{background-color: #1a2531; height: 80px; line-height: 80px; padding: 0 30px ;}
div.white-header {background-color: #fff; height:170px;box-shadow: 0 3px 5px 0 rgba(0,0,0,0.02); padding: 0 30px ;}
.chief-officer {color: #ffffff; text-align: left; font-size: 26px; font-weight: 300; margin-bottom: 15px; float:left; width:60%}
.chief-officer .ref-no {color: #8E97A0;}
.by-name {color: #ffffff; float: right; width:30%;text-align: right;}
.appl-c-box{display: inline-block;width: 19%;text-align: left;background: #ffffff none repeat scroll 0 0;margin: 0.4% 0.4%;width: 19.05%;}
.cb-title{color: #ffffff;font-size: 16px;padding: 13.5px 16px;float: left;width: 100%;}
.gridbox{background-color: #4A4A4A; padding: 10px;}
.gridbox-applicant{color: #FFFFFF;font-size: 16px;}
.jcc-box .red-bg {background-color: #F9623D; color : #fff;}
.jcc-box .red-bg span , .jcc-box .green-bg span{color : #fff;}
.jcc-box .green-bg {background-color: #67B413;color : #fff;}
@page
{
size: A4 portrait;
margin : 0;
background: #e9ecef;
@top-left { content: element(header);}
}
</style>
</oneit:dynIncluded>
cmsWebApp/webroot/extensions/adminportal/inc/applicants_list_report.jsp
0 → 100644
View file @
d3c9a37b
<%@ page extends="oneit.servlets.jsp.JSPInclude"%>
<%@ taglib prefix="tagfile" tagdir="/WEB-INF/tags"%>
<%@ include file="/setuprequest.jsp"%>
<%@ page import="oneit.servlets.process.*"%>
<%@ page import="oneit.objstore.*, oneit.utils.*, oneit.utils.text.*"%>
<%@ page import="java.util.*"%>
<%@ page import="performa.orm.*, performa.orm.types.*, performa.chart.*, performa.utils.*"%>
<%
ORMProcessState process = (ORMProcessState) ProcessDecorator.getDefaultProcess(request);
ObjectTransaction objTran = process.getTransaction();
Job job = (Job) process.getAttribute("Job");
List<JobApplication> applications = (List<JobApplication>) getData(request, "Applications");
%>
<oneit:dynIncluded>
<div class="wrap">
<div class="header">
<div class="chief-officer">
<oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML" />
<%
if(job.getReferenceNumber() != null)
{
%>
(<oneit:toString value="<%= job.getReferenceNumber() %>" mode="EscapeHTML" />)
<%
}
%>
</div>
<div class="by-name">
<span>
<%
if(job.isClientAvailable())
{
%>
<oneit:toString value="<%= job.getClient() %>" mode="EscapeHTML" />
<%
}
%>
</span> by <oneit:toString value="<%= job.getCreatedBy() %>" mode="EscapeHTML" nullValue=""/>
<oneit:toString value="<%= job.getLevel() %>" mode="EscapeHTML" />
</div>
</div>
<div class="white-header">
All Applicants
<span><%= applications.size() %> Applicants</span>
</div>
<%
for (JobApplication jobApplication : applications)
{
String roleFit = FormatUtils.stringify(jobApplication.getRoleFitPercentage(), "PercentageWholeNumber", "0");
String culture = FormatUtils.stringify(jobApplication.getCultureFitScore(), "PercentageWholeNumber", "0");
%>
<div class="appli-row">
<div class="appli-list-name">
<oneit:toString value="<%= jobApplication.getCandidate() %>" mode="EscapeHTML" />
<div class="appli-status">
<oneit:toString value="<%= jobApplication.getApplicantStatusStr() %>" mode="EscapeHTML" />
</div>
</div>
<div class="appli-overall">
Overall rank
<oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
</div>
<div class="appli-l eq-second-height">
<span class="appli-view-bar">
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<%= roleFit %>" aria-valuemin="0" aria-valuemax="100"
style="<%= "width: " + roleFit %>">
<span class="show-precentage"><%= roleFit %></span>
</div>
</div>
</span>
role fit
</div>
<div class="appli-l eq-second-height">
<span class="appli-view-bar">
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<%= culture %>" aria-valuemin="0" aria-valuemax="100"
style="<%= "width: " + culture %>">
<span class="show-precentage"><%= culture %></span>
</div>
</div>
</span>
culture fit
</div>
<%
if(job.getIncludeAssessmentCriteria() == Boolean.TRUE)
{
long criteriaVal = jobApplication.getRequirementFitScore();
String criteria = FormatUtils.stringify(criteriaVal, "PercentageWholeNumber", "0");
boolean missingReq = jobApplication.hasFailedEssentialRequirements();
%>
<div class="appli-l eq-second-height">
<span class="appli-view-bar">
<div class="progress">
<div class="progress-bar <%= (criteriaVal == 100 && !missingReq ? " green" : "")%>" role="progressbar" aria-valuenow="<%= criteria %>" aria-valuemin="0" aria-valuemax="100"
style="<%= "width: " + criteria %>">
<span class="show-precentage"><%= criteria %></span>
</div>
</div>
<span class="missing-requirements-icon" style="<%= missingReq ? "display:inline-block" : "display:none" %>"></span>
</span>
<span class="<%= missingReq ? "red-requirements" : "" %>">
requirements
</span>
</div>
<%
}
%>
</div>
<%
}
%>
</div>
</oneit:dynIncluded>
\ No newline at end of file
cmsWebApp/webroot/extensions/adminportal/inc/applicants_list_report_header.jsp
0 → 100644
View file @
d3c9a37b
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@include file="../../../setuprequest.jsp" %>
<oneit:dynIncluded>
<style type="text/css" media="print,screen" >
/*@import url("//hello.myfonts.net/count/343a83");*/
@font-face {font-family: 'Usual-Bold';src: url('../../../fonts/343A83_0_0.eot');src: url('../../../fonts/343A83_0_0.eot?#iefix') format('embedded-opentype'),url('../../../fonts/343A83_0_0.woff2') format('woff2'),url('../../../fonts/343A83_0_0.woff') format('woff'),url('../../../fonts/343A83_0_0.ttf') format('truetype');}
@font-face {font-family: 'Usual-Light';src: url('../../../fonts/343A83_1_0.eot');src: url('../../../fonts/343A83_1_0.eot?#iefix') format('embedded-opentype'),url('../../../fonts/343A83_1_0.woff2') format('woff2'),url('../../../fonts/343A83_1_0.woff') format('woff'),url('../../../fonts/343A83_1_0.ttf') format('truetype');}
@font-face {font-family: 'Usual-Medium';src: url('../../../fonts/343A83_2_0.eot');src: url('../../../fonts/343A83_2_0.eot?#iefix') format('embedded-opentype'),url('../../../fonts/343A83_2_0.woff2') format('woff2'),url('../../../fonts/343A83_2_0.woff') format('woff'),url('../../../fonts/343A83_2_0.ttf') format('truetype');}
@font-face {font-family: 'Usual-Regular';src: url('../../../fonts/343A83_3_0.eot');src: url('../../../fonts/343A83_3_0.eot?#iefix') format('embedded-opentype'),url('../../../fonts/343A83_3_0.woff2') format('woff2'),url('../../../fonts/343A83_3_0.woff') format('woff'),url('../../../fonts/343A83_3_0.ttf') format('truetype');}
div.header{background-color: #1a2531; height: 80px; line-height: 80px; padding: 0 30px ;}
div.white-header {background-color: #fff; height:170px;box-shadow: 0 3px 5px 0 rgba(0,0,0,0.02); padding: 0 30px ;}
.chief-officer {color: #ffffff; text-align: left; font-size: 26px; font-weight: 300; margin-bottom: 15px; float:left; width:60%}
.chief-officer .ref-no {color: #8E97A0;}
.by-name {color: #ffffff; float: right; width:30%;text-align: right;}
.appli-row{ width: 100%; background-color: #ffffff; }
.appli-list-name {color: #4a4a4a;font-size: 20px;padding: 14px 0 17px 21px;width: 22%;}
.appli-status { color: #767577; font-size: 11px;}
@page
{
size: A4 portrait;
margin : 0;
background: #e9ecef;
@top-left { content: element(header);}
}
</style>
</oneit:dynIncluded>
cmsWebApp/webroot/extensions/adminportal/inc/job_title_bar.jsp
View file @
d3c9a37b
...
...
@@ -7,6 +7,7 @@
<%
Job job = (Job) process.getAttribute("Job");
boolean applicantPage = (boolean) getData(request, "applicantPage");
boolean showList = (boolean) getData(request, "ShowList");
String editJobPage = WebUtils.getSamePageInRenderMode(request, WebUtils.EDIT_JOB);
String sharePage = WebUtils.getSamePageInRenderMode(request, WebUtils.CREATED_JOB);
String jobPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
...
...
@@ -30,6 +31,8 @@
editJobPage = WebUtils.getSamePageInRenderMode(request, WebUtils.WORKPLACE_CULTURE);
}
}
List<JobApplication> applications = (List<JobApplication>) getData(request, "applications");
%>
<oneit:dynIncluded>
...
...
@@ -140,7 +143,10 @@
EDIT JOB
</oneit:button>
<oneit:button value=" " cssClass="job-edit-menu-item" name="downloadApplicantReport" skin="link"
requestAttribs="<%= CollectionUtils.EMPTY_MAP %>">
requestAttribs="<%= CollectionUtils.mapEntry("ShowList", showList)
.mapEntry("ApplicantPage", applicantPage)
.mapEntry("Applications", applications)
.toMap() %>">
EXPORT APPLICANT REPORT
</oneit:button>
</div>
...
...
cmsWebApp/webroot/extensions/adminportal/view_applicants.jsp
View file @
d3c9a37b
...
...
@@ -93,6 +93,8 @@
<div class="dashboard-content-area">
<oneit:dynInclude page="/extensions/adminportal/inc/applicant_view_tabs.jsp"
ShowList="<%= showList %>"
applications="<%= sortedApplications %>"
WorkFlowStatus="<%= workflowStatus %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
...
...
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