Commit 8bb8ef45 by Harsh Shah

Finish Release-20170906

# Conflicts:
#	cmsWebApp/src/performa/utils/Utils.java
#	cmsWebApp/webroot/extensions/adminportal/inc/application_list_data.jsp
#	cmsWebApp/webroot/extensions/adminportal/inc/htmlheader.jsp
#	cmsWebApp/webroot/extensions/adminportal/inc/job_title_bar.jsp
#	cmsWebApp/webroot/extensions/adminportal/inc/view_application_tab_applicant.jsp
#	cmsWebApp/webroot/extensions/adminportal/sign_in.jsp
#	cmsWebApp/webroot/extensions/adminportal/view_applicants_shortlist_grid.jsp
#	cmsWebApp/webroot/extensions/adminportal/view_applicantss_grid.jsp
#	cmsWebApp/webroot/extensions/applicantportal/application_outline.jsp
#	cmsWebApp/webroot/extensions/applicantportal/inc/htmlheader.jsp
#	cmsWebApp/webroot/extensions/applicantportal/job_match_assessment.jsp
#	cmsWebApp/webroot/extensions/applicantportal/job_overview.jsp
#	cmsWebApp/webroot/extensions/applicantportal/selection_criteria.jsp
#	cmsWebApp/webroot/extensions/applicantportal/sign_in.jsp
#	cmsWebApp/webroot/extensions/applicantportal/submit_application.jsp
#	cmsWebApp/webroot/extensions/applicantportal/verify_identity.jsp
#	cmsWebApp/webroot/extensions/applicantportal/workplace_culture.jsp
parents 8b8695e7 dd8ec62e
...@@ -112,7 +112,7 @@ public class Candidate extends BaseCandidate ...@@ -112,7 +112,7 @@ public class Candidate extends BaseCandidate
public boolean assessmentCompleted(Job job) //role public boolean assessmentCompleted(Job job) //role
{ {
int allAnswersCount = job.getAllLeftQuestions(Arrays.asList(Question.searchAll(getTransaction()))).size(); int allAnswersCount = job.getAllQuestions().size();
if(allAnswersCount > 0) if(allAnswersCount > 0)
{ {
......
...@@ -14,7 +14,7 @@ import oneit.utils.filter.CollectionFilter; ...@@ -14,7 +14,7 @@ import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter; import oneit.utils.filter.Filter;
import oneit.utils.parsers.FieldException; import oneit.utils.parsers.FieldException;
import performa.orm.types.*; import performa.orm.types.*;
import performa.utils.Utils; import performa.utils.*;
public class Job extends BaseJob public class Job extends BaseJob
...@@ -101,28 +101,55 @@ public class Job extends BaseJob ...@@ -101,28 +101,55 @@ public class Job extends BaseJob
return super.getWriteability_JobStatus(); return super.getWriteability_JobStatus();
} }
public void calculateRoleFitForRanking() throws FieldException
public Boolean jobDetailsCompleted()
{ {
return getJobTitle() != null && getJobDescription() != null; if(!isTrue(getRankingCompleted()))
} {
//Preloading data
pipelineJob().toJobApplications().toCandidate().toTestAnalysises().toCandidateClassScores().uniqueVals();
pipelineJob().toJobApplications().toCandidate().toCultureCriteriaAnswers().toSelectedQuestion().toNarratives().toCultureElementRating().uniqueVals();
pipelineJob().toJobApplications().toCandidate().toCultureCriteriaAnswers().toCultureElement().uniqueVals();
pipelineJob().toLevel().toLevelClassCriterias().toFactorClass().uniqueVals();
pipelineJob().toLevel().toClassNormalisations().uniqueVals();
pipelineJob().toLevel().toLevelNormalisations().uniqueVals();
List<JobApplication> sortedApplications = ObjstoreUtils.sort(getSubmittedApplications(),
new ObjectTransform[]{JobApplicationRoleFitTransform.INSTANCE, JobApplicationCultureFitTransform.INSTANCE},
new Comparator[]{CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR), CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR)});
public Boolean assessmentCompleted() for(JobApplication jobApplication : getSubmittedApplications())
{ {
return Boolean.TRUE; jobApplication.setOverallRank(sortedApplications.indexOf(jobApplication) + 1);
}
}
setRankingCompleted(true);
} }
public JobApplication getTopper()
public Boolean cultureCompleted()
{ {
return Boolean.FALSE; try
{
calculateRoleFitForRanking();
} }
catch(FieldException ex)
{
return null;
}
List<JobApplication> sortedApplications = ObjstoreUtils.sort(getSubmittedApplications(),
new ObjectTransform[]{JobApplicationRoleFitTransform.INSTANCE},
new Comparator[]{CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR)});
if(sortedApplications.size() > 0)
{
return sortedApplications.get(0);
}
return null;
}
public Boolean jobMatchCompleted() public Boolean jobDetailsCompleted()
{ {
return Boolean.TRUE; return getJobTitle() != null && getJobDescription() != null;
} }
...@@ -139,6 +166,15 @@ public class Job extends BaseJob ...@@ -139,6 +166,15 @@ public class Job extends BaseJob
return getAssessmentCriteraByType(criteria).size(); return getAssessmentCriteraByType(criteria).size();
} }
public List<Question> getAllQuestions()
{
return Arrays.asList(Question.searchAll(getTransaction()));
}
public List<Question> getAllLeftQuestions()
{
return getAllLeftQuestions(getAllQuestions());
}
//to get only left Questions //to get only left Questions
public List<Question> getAllLeftQuestions(List<Question> totalQuestions) public List<Question> getAllLeftQuestions(List<Question> totalQuestions)
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
<TRANSIENT name="AssessmentTemplateName" type="String"/> <TRANSIENT name="AssessmentTemplateName" type="String"/>
<TRANSIENT name="CultureTemplateName" type="String"/> <TRANSIENT name="CultureTemplateName" type="String"/>
<TRANSIENT name="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/> <TRANSIENT name="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/>
<TRANSIENT name="RankingCompleted" type="Boolean" />
<TRANSIENTSINGLE name="AssessmentTemplate" type="AssessmentCriteriaTemplate" /> <TRANSIENTSINGLE name="AssessmentTemplate" type="AssessmentCriteriaTemplate" />
<TRANSIENTSINGLE name="CultureTemplate" type="CultureCriteriaTemplate" /> <TRANSIENTSINGLE name="CultureTemplate" type="CultureCriteriaTemplate" />
......
package performa.orm; package performa.orm;
import java.util.*; import java.util.*;
import oneit.logging.LoggingArea; import oneit.logging.*;
import oneit.objstore.StorageException; import oneit.objstore.*;
import oneit.objstore.rdbms.filters.EqualsFilter; import oneit.objstore.rdbms.filters.EqualsFilter;
import oneit.objstore.rdbms.filters.IsNotNullFilter; import oneit.objstore.rdbms.filters.IsNotNullFilter;
import oneit.objstore.rdbms.filters.NotEqualsFilter; import oneit.objstore.rdbms.filters.NotEqualsFilter;
import oneit.utils.*;
import oneit.utils.filter.CollectionFilter; import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter; import oneit.utils.filter.Filter;
import oneit.utils.math.NullArith; import oneit.utils.math.NullArith;
...@@ -37,6 +38,21 @@ public class JobApplication extends BaseJobApplication ...@@ -37,6 +38,21 @@ public class JobApplication extends BaseJobApplication
return jobApplication; return jobApplication;
} }
@Override
public void validate(ValidationContext context)
{
try
{
//Ideally should be managed with uniqueGroup, but uniqueGroup doesnt work without atleast 1 attribute
searchCandidateJob(getTransaction(), getCandidate(), getJob()); //It will throw RuntimeException when more than 1 record found.
}
catch(RuntimeException ex)
{
context.check(false, this, SINGLEREFERENCE_Job, "alreadyApplied");
}
super.validate(context);
}
public boolean createAssessmentCriteriaObjects() throws FieldException public boolean createAssessmentCriteriaObjects() throws FieldException
{ {
...@@ -221,32 +237,98 @@ public class JobApplication extends BaseJobApplication ...@@ -221,32 +237,98 @@ public class JobApplication extends BaseJobApplication
return getJob() != null && isTrue(getJob().getIncludeAssessmentCriteria()); return getJob() != null && isTrue(getJob().getIncludeAssessmentCriteria());
} }
// TODO: Fix these hard coded values
@Override @Override
public Integer getOverallSuitability() public Map getRoleFit()
{
if(super.getRoleFit() == null && getCandidate() != null && getJob() != null && getJob().getLevel() != null)
{
try
{
setRoleFit(AnalysisEngine.getRoleFitSuitability(getCandidate(), getJob().getLevel()));
}
catch (FieldException ex)
{ {
return 1; LogMgr.log(LOG, LogLevel.PROCESSING1, ex, "Error occured when setting RoleFit for " + this);
}
}
return super.getRoleFit();
} }
@Override
public Map getCultureFit()
{
if(super.getCultureFit() == null && getCandidate() != null && getJob() != null && getJob().getLevel() != null)
{
try
{
setCultureFit(AnalysisEngine.getCultureFit(getCandidate().getCultureCriteriaAnswersSet(), getJob()));
}
catch (FieldException ex)
{
LogMgr.log(LOG, LogLevel.PROCESSING1, ex, "Error occured when setting CultureFit for " + this);
}
}
return super.getCultureFit();
}
public Double getJobMatchPercentage() //ROLE @Override
public Map getRequirementFit()
{ {
return AnalysisEngine.getRoleFitSuitability(getCandidate(), getJob().getLevel()).get(null); if(super.getRequirementFit() == null)
{
try
{
setRequirementFit(AnalysisEngine.getRequirementFit(getAssessmentCriteriaAnswersSet()));
}
catch (FieldException ex)
{
LogMgr.log(LOG, LogLevel.PROCESSING1, ex, "Error occured when setting RequirementFit for " + this);
}
}
return super.getRequirementFit();
} }
@Override
public Integer getOverallRank()
{
if(getJob() != null)
{
try
{
getJob().calculateRoleFitForRanking();
}
catch (FieldException ex)
{
LogMgr.log(LOG, LogLevel.PROCESSING1, ex, "Error occured when setting OverallRank for " + this);
}
}
return super.getOverallRank();
}
public int getCulturePercentage() public Double getRoleFitScore()
{ {
return AnalysisEngine.getCultureFit(getCandidate().getCultureCriteriaAnswersSet(), getJob()).get(null).intValue(); return getRoleFit() != null ? (Double)getRoleFit().get(null) : 0d;
} }
public Long getCultureFitScore()
{
return getCultureFit() != null ? (Long) getCultureFit().get(null) : 0;
}
public int getCriteriaPercentage () //REQ public Long getRequirementFitScore()
{ {
return AnalysisEngine.getRequirementFit(getAssessmentCriteriaAnswersSet()).get(null).intValue(); return getRequirementFit() != null ? (Long) getRequirementFit().get(null) : 0;
} }
//This will return relative percentage considering topper as 100%
public Double getRoleFitPercentage()
{
JobApplication jobTopper = getJob() != null ? getJob().getTopper() : null;
Double myScore = getRoleFitScore();
Double topScore = jobTopper.getRoleFitScore();
return NullArith.round(NullArith.divide(NullArith.multiply(myScore, 100), topScore), 2);
}
public List<AppProcessOption> getValidProcessOptions() public List<AppProcessOption> getValidProcessOptions()
{ {
...@@ -323,7 +405,7 @@ public class JobApplication extends BaseJobApplication ...@@ -323,7 +405,7 @@ public class JobApplication extends BaseJobApplication
int remainingTime = 0; int remainingTime = 0;
//REQ //REQ
if(getJob()!=null && getJob().getIncludeAssessmentCriteria()==Boolean.TRUE) if(getJob()!=null && isTrue(getJob().getIncludeAssessmentCriteria()))
{ {
if(!selectionCompleted()) if(!selectionCompleted())
{ {
...@@ -359,7 +441,7 @@ public class JobApplication extends BaseJobApplication ...@@ -359,7 +441,7 @@ public class JobApplication extends BaseJobApplication
} }
else //partially completed test for role else //partially completed test for role
{ {
int allAnswersCount = getJob().getAllLeftQuestions(Arrays.asList(Question.searchAll(getTransaction()))).size(); int allAnswersCount = getJob().getAllQuestions().size();
if(allAnswersCount > 0) if(allAnswersCount > 0)
{ {
...@@ -374,7 +456,12 @@ public class JobApplication extends BaseJobApplication ...@@ -374,7 +456,12 @@ public class JobApplication extends BaseJobApplication
} }
} }
} }
return remainingTime; return remainingTime;
} }
@Override
public boolean filterCandidateJob(Candidate candidate, Job job) throws StorageException
{
return (CollectionUtils.equals(candidate, getCandidate()) && CollectionUtils.equals(job, getJob()));
}
} }
\ No newline at end of file
...@@ -8,7 +8,10 @@ ...@@ -8,7 +8,10 @@
<MULTIPLEREFERENCE name="AssessmentCriteriaAnswers" type="AssessmentCriteriaAnswer" backreferenceName="JobApplication" /> <MULTIPLEREFERENCE name="AssessmentCriteriaAnswers" type="AssessmentCriteriaAnswer" backreferenceName="JobApplication" />
<TRANSIENT name="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/> <TRANSIENT name="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/>
<TRANSIENT name="OverallSuitability" type="Integer"/> <TRANSIENT name="OverallRank" type="Integer" />
<TRANSIENT name="RoleFit" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/>
<TRANSIENT name="RequirementFit" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/>
<TRANSIENT name="CultureFit" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/>
<TABLE name="tl_job_application" tablePrefix="object" polymorphic="FALSE"> <TABLE name="tl_job_application" tablePrefix="object" polymorphic="FALSE">
...@@ -23,7 +26,7 @@ ...@@ -23,7 +26,7 @@
<SEARCH type="All" paramFilter="tl_job_application.object_id is not null" orderBy="tl_job_application.object_id" /> <SEARCH type="All" paramFilter="tl_job_application.object_id is not null" orderBy="tl_job_application.object_id" />
<SEARCH type="CandidateJob" paramFilter="tl_job_application.object_id is not null" singleton="TRUE"> <SEARCH type="CandidateJob" paramFilter="tl_job_application.object_id is not null" singleton="TRUE" checkTXObjects="TRUE">
<PARAM name="Candidate" type="Candidate" transform="Candidate.getObjectID()" paramFilter="candidate_id = ${Candidate} " /> <PARAM name="Candidate" type="Candidate" transform="Candidate.getObjectID()" paramFilter="candidate_id = ${Candidate} " />
<PARAM name="Job" type="Job" transform="Job.getObjectID()" paramFilter="job_id = ${Job}" /> <PARAM name="Job" type="Job" transform="Job.getObjectID()" paramFilter="job_id = ${Job}" />
</SEARCH> </SEARCH>
......
package performa.utils;
import oneit.utils.ObjectTransform;
import performa.orm.JobApplication;
/**
*
* @author Harsh
*/
public class JobApplicationCultureFitTransform implements ObjectTransform<JobApplication, Long>
{
public static final JobApplicationCultureFitTransform INSTANCE = new JobApplicationCultureFitTransform();
@Override
public Long transform(JobApplication original)
{
if(original == null)
{
return null;
}
return original.getCultureFitScore();
}
}
\ No newline at end of file
package performa.utils;
import oneit.utils.ObjectTransform;
import performa.orm.JobApplication;
/**
*
* @author Harsh
*/
public class JobApplicationRoleFitTransform implements ObjectTransform<JobApplication, Double>
{
public static final JobApplicationRoleFitTransform INSTANCE = new JobApplicationRoleFitTransform();
@Override
public Double transform(JobApplication original)
{
if(original == null)
{
return null;
}
return original.getRoleFitScore();
}
}
\ No newline at end of file
...@@ -3,6 +3,7 @@ package performa.utils; ...@@ -3,6 +3,7 @@ package performa.utils;
import java.util.*; import java.util.*;
import javax.activation.DataSource; import javax.activation.DataSource;
import javax.servlet.http.*; import javax.servlet.http.*;
import oneit.appservices.config.ConfigMgr;
import oneit.email.ConfigurableArticleTemplateEmailer; import oneit.email.ConfigurableArticleTemplateEmailer;
import oneit.email.ConfigurableEmailerException; import oneit.email.ConfigurableEmailerException;
import oneit.logging.LogLevel; import oneit.logging.LogLevel;
...@@ -56,6 +57,7 @@ public class Utils ...@@ -56,6 +57,7 @@ public class Utils
public static final String LEVEL_SALES = "Sales"; public static final String LEVEL_SALES = "Sales";
public static final String LEVEL_MANAGEMENT = "Management"; public static final String LEVEL_MANAGEMENT = "Management";
public static final String LEVEL_EXECUTIVE = "Executive"; public static final String LEVEL_EXECUTIVE = "Executive";
public static final String HEAP_ANALYSIS_ID = ConfigMgr.getKeyfileString("heap.analysis.id", "3411110378");
public static Role getRole(String role, ObjectTransaction transaction) public static Role getRole(String role, ObjectTransaction transaction)
{ {
...@@ -251,17 +253,17 @@ public class Utils ...@@ -251,17 +253,17 @@ public class Utils
if(appSortOption==AppSortOption.OLDEST) if(appSortOption==AppSortOption.OLDEST)
{ {
transform = JobApplication.pipesJobApplication().toSubmittedDate(); transform = JobApplication.pipesJobApplication().toSubmittedDate();
comparator = CollectionUtils.DEFAULT_COMPARATOR; comparator = CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST;
} }
else if(appSortOption==AppSortOption.NEWEST) else if(appSortOption==AppSortOption.NEWEST)
{ {
transform = JobApplication.pipesJobApplication().toSubmittedDate(); transform = JobApplication.pipesJobApplication().toSubmittedDate();
comparator = CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR); comparator = CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST);
} }
else if(appSortOption==AppSortOption.RANK) else if(appSortOption==AppSortOption.RANK)
{ {
transform = JobApplication.pipesJobApplication().toOverallSuitability(); transform = JobApplication.pipesJobApplication().toOverallRank();
comparator = CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR); comparator = CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST;
} }
else if(appSortOption==AppSortOption.ALPHA_A_Z) else if(appSortOption==AppSortOption.ALPHA_A_Z)
{ {
......
...@@ -29,9 +29,9 @@ ...@@ -29,9 +29,9 @@
for(JobApplication jobApplication : applications) for(JobApplication jobApplication : applications)
{ {
String jobMatch = FormatUtils.stringify(jobApplication.getJobMatchPercentage(), "PercentageWholeNumber", "0"); String roleFit = FormatUtils.stringify(jobApplication.getRoleFitPercentage(), "PercentageTwoDP", "0");
String culture = FormatUtils.stringify(jobApplication.getCulturePercentage(), "PercentageWholeNumber", "0"); String culture = FormatUtils.stringify(jobApplication.getCultureFitScore(), "PercentageWholeNumber", "0");
String criteria = FormatUtils.stringify(jobApplication.getCriteriaPercentage(), "PercentageWholeNumber", "0"); String criteria = FormatUtils.stringify(jobApplication.getRequirementFitScore(), "PercentageWholeNumber", "0");
String appID = "app-id-" + jobApplication.getID().toString(); String appID = "app-id-" + jobApplication.getID().toString();
%> %>
<div class="appli-row" id="<%= jobApplication.getID() %>"> <div class="appli-row" id="<%= jobApplication.getID() %>">
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
</div> </div>
<!--TODO: logic needed to be worked out. Added to note that there are three colors--> <!--TODO: logic needed to be worked out. Added to note that there are three colors-->
<div class="<%= "appli-percent-no " + (j == 0 ? "first green" : (j < 3 ? "blue" : "grey" ))%>"> <div class="<%= "appli-percent-no " + (j == 0 ? "first green" : (j < 3 ? "blue" : "grey" ))%>">
<oneit:toString value="<%= jobApplication.getOverallSuitability() %>" mode="Integer" /> <oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
</div> </div>
</div> </div>
<% <%
...@@ -69,8 +69,8 @@ ...@@ -69,8 +69,8 @@
<div class="<%= widthClass %> appli-l eq-second-height"> <div class="<%= widthClass %> appli-l eq-second-height">
<span class="appli-view-bar"> <span class="appli-view-bar">
<div class="progress"> <div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<%= jobMatch %>" aria-valuemin="0" aria-valuemax="100" <div class="progress-bar" role="progressbar" aria-valuenow="<%= roleFit %>" aria-valuemin="0" aria-valuemax="100"
style="<%= "width: " + jobMatch %>"> style="<%= "width: " + roleFit %>">
</div> </div>
</div> </div>
</span> </span>
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
<title><%= "Talentology" + (company != null ? " - " + company.getCompanyName() : "")%></title> <title><%= "Talentology" + (company != null ? " - " + company.getCompanyName() : "")%></title>
<%@include file="/inc/std_imports.jsp" %> <%@include file="/inc/std_imports.jsp" %>
<%@include file="/hotjar.jsp" %>
<%@include file="/heapAnalysis.jsp" %>
</head> </head>
<script> <script>
window.intercomSettings = { window.intercomSettings = {
...@@ -107,7 +109,6 @@ ...@@ -107,7 +109,6 @@
} }
}); });
</script> </script>
<% <%
} }
%> %>
...@@ -43,7 +43,8 @@ ...@@ -43,7 +43,8 @@
<% <%
} }
%> %>
</span> by <oneit:toString value="<%= job.getCompanyUser() %>" mode="EscapeHTML" nullValue=""/><span class="ex-management">&bull;&nbsp; </span> by <oneit:toString value="<%= job.getCompanyUser() %>" mode="EscapeHTML" nullValue=""/>
<span class="ex-management">&bull;&nbsp;
<oneit:toString value="<%= job.getLevel() %>" mode="EscapeHTML" /> <oneit:toString value="<%= job.getLevel() %>" mode="EscapeHTML" />
</span> </span>
</div> </div>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<oneit:dynIncluded> <oneit:dynIncluded>
<% <%
Map<FactorClass, Double> roleScoreMap = AnalysisEngine.getRoleFitSuitability(candidate, job.getLevel()); Map<FactorClass, Double> roleScoreMap = (Map<FactorClass, Double>)jobApplication.getRoleFit();
%> %>
<script> <script>
function tabToggle(tab) { function tabToggle(tab) {
...@@ -73,14 +73,14 @@ ...@@ -73,14 +73,14 @@
<div class="applicant-progress"> <div class="applicant-progress">
<div class="<%= job.getIncludeAssessmentCriteria()==Boolean.TRUE ? "col-sm-4" : "col-sm-6" %> col-xs-12 text-center" href="#1a" data-toggle="tab" id="progress1" onClick="tabToggle('#tab1')"> <div class="<%= job.getIncludeAssessmentCriteria()==Boolean.TRUE ? "col-sm-4" : "col-sm-6" %> col-xs-12 text-center" href="#1a" data-toggle="tab" id="progress1" onClick="tabToggle('#tab1')">
<label class="progress-label">role fit</label> <label class="progress-label">role fit</label>
<div class="percent-green fixed-width"> <div class="percent-role fixed-width">
<p style="display:none;"><oneit:toString value="<%= roleScoreMap.get(null) %>" mode="TwoDPDouble" nullValue="0"/></p> <p style="display:none;"><oneit:toString value="<%= jobApplication.getRoleFitScore() %>" mode="TwoDPDouble" nullValue="0"/></p>
</div> </div>
</div> </div>
<div class="<%= job.getIncludeAssessmentCriteria()==Boolean.TRUE ? "col-sm-4" : "col-sm-4" %> col-xs-12 text-center" href="#2a" data-toggle="tab" id="progress2" onClick="tabToggle('#tab2')"> <div class="<%= job.getIncludeAssessmentCriteria()==Boolean.TRUE ? "col-sm-4" : "col-sm-4" %> col-xs-12 text-center" href="#2a" data-toggle="tab" id="progress2" onClick="tabToggle('#tab2')">
<label class="progress-label">culture fit</label> <label class="progress-label">culture fit</label>
<div class="percent-green fixed-width"> <div class="percent-culture fixed-width">
<p style="display:none;"><oneit:toString value="<%= jobApplication.getCulturePercentage() %>" mode="PercentageWholeNumber" /></p> <p style="display:none;"><oneit:toString value="<%= jobApplication.getCultureFitScore() %>" mode="PercentageWholeNumber" /></p>
</div> </div>
</div> </div>
<% <%
...@@ -89,8 +89,8 @@ ...@@ -89,8 +89,8 @@
%> %>
<div class="col-sm-4 col-xs-12 text-center" href="#3a" data-toggle="tab" id="progress3" onClick="tabToggle('#tab3')"> <div class="col-sm-4 col-xs-12 text-center" href="#3a" data-toggle="tab" id="progress3" onClick="tabToggle('#tab3')">
<label class="progress-label">requirements</label> <label class="progress-label">requirements</label>
<div class="percent-blue fixed-width"> <div class="percent-req fixed-width">
<p style="display:none;"><oneit:toString value="<%= jobApplication.getCriteriaPercentage() %>" mode="PercentageWholeNumber" /></p> <p style="display:none;"><oneit:toString value="<%= jobApplication.getRequirementFitScore() %>" mode="PercentageWholeNumber" /></p>
</div> </div>
</div> </div>
<% <%
...@@ -109,7 +109,7 @@ ...@@ -109,7 +109,7 @@
<% <%
} }
%> %>
<li id="tab4"><a href="#4a" data-toggle="tab">areas of concern</a></li> <li id="tab4" style="display: none"><a href="#4a" data-toggle="tab">areas of concern</a></li>
</ul> </ul>
<div class="tab-content clearfix"> <div class="tab-content clearfix">
<div class="tab-pane active" id="1a"> <div class="tab-pane active" id="1a">
...@@ -177,7 +177,7 @@ ...@@ -177,7 +177,7 @@
</div> </div>
<div class="tab-pane" id="2a"> <div class="tab-pane" id="2a">
<% <%
Map<CultureClass, Long> cultureFitData = AnalysisEngine.getCultureFit(candidate.getCultureCriteriaAnswersSet(), job); Map<CultureClass, Long> cultureFitData = (Map<CultureClass, Long>)jobApplication.getCultureFit();
for(CultureClass cClass: cultureFitData.keySet()) for(CultureClass cClass: cultureFitData.keySet())
{ {
...@@ -254,7 +254,7 @@ ...@@ -254,7 +254,7 @@
%> %>
<div class="tab-pane" id="3a"> <div class="tab-pane" id="3a">
<% <%
Map<Importance, Long> requirementFitData = AnalysisEngine.getRequirementFit(jobApplication.getAssessmentCriteriaAnswersSet()); Map<Importance, Long> requirementFitData = (Map<Importance, Long>)jobApplication.getRequirementFit();
for(Importance importance: requirementFitData.keySet()) for(Importance importance: requirementFitData.keySet())
{ {
...@@ -338,7 +338,7 @@ ...@@ -338,7 +338,7 @@
<div class="app-right-b"> <div class="app-right-b">
<div class="overall-suit">overall rank</div> <div class="overall-suit">overall rank</div>
<div class="big-percentage"> <div class="big-percentage">
<oneit:toString value="<%= jobApplication.getOverallSuitability() %>" mode="Integer" /> <oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
</div> </div>
</div> </div>
<div class="applicant-contact-info"> <div class="applicant-contact-info">
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS xmlns:oneit="http://www.1iT.com.au" name="">
<NODE factory="Vector" name="Script"><NODE class="oneit.appservices.upgrade.cms.CMSArticleUpdateOperation" factory="Participant" name="Home">
<createSpecificIdentifier factory='String' value='HOME'/>
<articleIdentifiers factory="Array" class="java.lang.String">
<NODE factory="String" value="HOME"/>
</articleIdentifiers>
<createdLabel factory="String" value="HOME"/>
<articleAttributeChanges factory="Map">
<NODE name="Additional CSS Class" factory="Null"/>
<NODE name="Exclude From Sitemap" factory="Boolean" value="false"/>
<NODE name="Exclude from SEO Indexing" factory="Boolean" value="false"/>
<NODE name="Add Brackline Separator" factory="Boolean" value="false"/>
<NODE name="On Top Menu" factory="Boolean" value="false"/>
<NODE name="On Footer Left" factory="Boolean" value="false"/>
<NODE name="Menu Title" factory="Null"/>
<NODE name="On Footer Menu" factory="Boolean" value="false"/>
<NODE name="OnLeftMenu" factory="Boolean" value="false"/>
<NODE name="Exclude From Search" factory="Boolean" value="false"/>
<NODE name="Target" factory="String" value="YRZCOYGLDTAG02BK7VK4TXHJIZF3ZS"/>
<NODE name="Menu Icon CSS" factory="Null"/>
<NODE name="On Left Menu" factory="Boolean" value="false"/>
<NODE name="Shortcuts" factory="Null"/>
<NODE name="Exclude From Navigation" factory="Boolean" value="false"/>
<NODE name="On Footer Right" factory="Boolean" value="false"/>
</articleAttributeChanges>
<ormAttributeChanges factory="Map">
<NODE name="PublishDate" factory="Date" value="2000-01-01 00:00:00"/>
<NODE name="WithdrawDate" factory="Date" value="3000-01-01 00:00:00"/>
<NODE name="Title" factory="String" value="Home"/>
<NODE name="ShortTitle" factory="String" value="Home"/>
<NODE name="SortOrder" factory="Integer" value="-36831027"/>
<NODE name="Type" factory="Enumerated" class="oneit.business.content.ArticleType" value="ARTICLE"/>
<NODE name="Template" factory="Enumerated" class="oneit.business.content.ArticleTemplate" value="INTERNAL_LINK"/>
</ormAttributeChanges>
<content factory="Map"> <NODE name="Body" factory="Map">
<NODE name="Content" factory="String"><![CDATA[<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<link type="text/css" rel="stylesheet" href="css/cms_style.css">
</head>
<body class="CMS_GENERIC_EDITOR CMS_${oneit.Template} CMS_${oneit.Template}_${oneit.ContentType} CMS_${oneit.ContentType}">
<p>This is some content that should sit within the Home page.</p>
<br>
</body>
</html>
]]></NODE>
<NODE name="TransformedContent" factory="String"><![CDATA[<p>This is some content that should sit within the Home page.</p>
<br>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="Synopsis" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<html>
<head>
<meta name='author' content='Cougar Content by 1iT www.1it.com.au'>
<link href="css/cms_style.css" rel="stylesheet" type="text/css">
</head>
<body>
<p>
</p>
<br>
</body>
</html>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
</content>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
...@@ -114,7 +114,7 @@ ...@@ -114,7 +114,7 @@
Candidate candidate = jobApplication.getCandidate(); Candidate candidate = jobApplication.getCandidate();
String appID = "app-id-" + jobApplication.getID().toString(); String appID = "app-id-" + jobApplication.getID().toString();
Map<FactorClass, Double> roleScoreMap = AnalysisEngine.getRoleFitSuitability(candidate, job.getLevel()); Map<FactorClass, Double> roleScoreMap = (Map<FactorClass, Double>)jobApplication.getRoleFit();
%> %>
<div class="<%= "appl-c-box " + (i == 0 ? " cb-one" : "")%> "> <div class="<%= "appl-c-box " + (i == 0 ? " cb-one" : "")%> ">
<!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this--> <!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this-->
...@@ -135,14 +135,14 @@ ...@@ -135,14 +135,14 @@
<div class="overall-suitablity grid-suitability"> <div class="overall-suitablity grid-suitability">
<!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this--> <!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this-->
<div class="<%= "over-all " + (i == 0 ? "f-60 green" : (i < 3 ? "blue" : "gray"))%>"> <div class="<%= "over-all " + (i == 0 ? "f-60 green" : (i < 3 ? "blue" : "gray"))%>">
<oneit:toString value="<%= jobApplication.getOverallSuitability() %>" mode="Integer" /> <oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
</div> </div>
<div class="<%= "overall " + (i == 0 ? "f-60" : "")%>">overall rank</div> <div class="<%= "overall " + (i == 0 ? "f-60" : "")%>">overall rank</div>
</div> </div>
<div class="jcc-box"> <div class="jcc-box">
<div class="job-match jcc"> <div class="job-match jcc">
<img src="images/app-job-match-icon.svg"> Role fit <img src="images/app-job-match-icon.svg"> Role fit
<span><oneit:toString value="<%= jobApplication.getJobMatchPercentage() %>" mode="TwoDPDouble" /></span> <span><oneit:toString value="<%= jobApplication.getRoleFitScore() %>" mode="TwoDPDouble" /></span>
</div> </div>
<div class="detail-box"> <div class="detail-box">
<% <%
...@@ -168,13 +168,13 @@ ...@@ -168,13 +168,13 @@
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<oneit:toString value="<%= jobApplication.getCulturePercentage() %>" mode="WholeNumber" /> <oneit:toString value="<%= jobApplication.getCultureFitScore() %>" mode="WholeNumber" />
</oneit:button> </oneit:button>
</span> </span>
</div> </div>
<div class="detail-box"> <div class="detail-box">
<% <%
Map<CultureClass, Long> cultureFitData = AnalysisEngine.getCultureFit(candidate.getCultureCriteriaAnswersSet(), job); Map<CultureClass, Long> cultureFitData = (Map<CultureClass, Long>)jobApplication.getCultureFit();
for(CultureClass cClass: cultureFitData.keySet()) for(CultureClass cClass: cultureFitData.keySet())
{ {
...@@ -202,13 +202,13 @@ ...@@ -202,13 +202,13 @@
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<oneit:toString value="<%= jobApplication.getCriteriaPercentage() %>" mode="WholeNumber" /> <oneit:toString value="<%= jobApplication.getRequirementFitScore() %>" mode="WholeNumber" />
</oneit:button> </oneit:button>
</span> </span>
</div> </div>
<div class="detail-box"> <div class="detail-box">
<% <%
Map<Importance, Long> requirementFitData = AnalysisEngine.getRequirementFit(jobApplication.getAssessmentCriteriaAnswersSet()); Map<Importance, Long> requirementFitData = (Map<Importance, Long>)jobApplication.getRequirementFit();
for(Importance importance: requirementFitData.keySet()) for(Importance importance: requirementFitData.keySet())
{ {
......
...@@ -134,7 +134,7 @@ ...@@ -134,7 +134,7 @@
<div class="overall-suitablity"> <div class="overall-suitablity">
<div class="<%= "overall " + (index == 0 ? "f-60" : "")%>">overall rank</div> <div class="<%= "overall " + (index == 0 ? "f-60" : "")%>">overall rank</div>
<div class="<%= "over-all " + (index == 0 ? "f-60 green" : (index < 3 ? "blue" : "gray"))%> "> <div class="<%= "over-all " + (index == 0 ? "f-60 green" : (index < 3 ? "blue" : "gray"))%> ">
<oneit:toString value="<%= jobApplication.getOverallSuitability() %>" mode="Integer" /> <oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
</div> </div>
</div> </div>
<div class="jcc-box"> <div class="jcc-box">
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<oneit:toString value="<%= jobApplication.getJobMatchPercentage() %>" mode="TwoDPDouble" /> <oneit:toString value="<%= jobApplication.getRoleFitScore() %>" mode="TwoDPDouble" />
</oneit:button> </oneit:button>
</span> </span>
</div> </div>
...@@ -156,7 +156,7 @@ ...@@ -156,7 +156,7 @@
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<oneit:toString value="<%= jobApplication.getCulturePercentage() %>" mode="WholeNumber" /> <oneit:toString value="<%= jobApplication.getCultureFitScore() %>" mode="WholeNumber" />
</oneit:button> </oneit:button>
</span> </span>
</div> </div>
...@@ -171,7 +171,7 @@ ...@@ -171,7 +171,7 @@
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<oneit:toString value="<%= jobApplication.getCriteriaPercentage() %>" mode="WholeNumber" /> <oneit:toString value="<%= jobApplication.getRequirementFitScore() %>" mode="WholeNumber" />
</oneit:button> </oneit:button>
</span> </span>
</div> </div>
......
...@@ -27,7 +27,18 @@ ...@@ -27,7 +27,18 @@
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() $(document).ready(function()
{ {
$('.percent-green').percentageLoader({ $('.percent-role').percentageLoader({
valElement: 'p',
strokeWidth: 20,
bgColor: '#e5e8eb',
ringColor: '#67b413',
textColor: '#67b413',
fontSize: '30px',
fontWeight: 'normal',
showPercent: false
});
$('.percent-culture').percentageLoader({
valElement: 'p', valElement: 'p',
strokeWidth: 20, strokeWidth: 20,
bgColor: '#e5e8eb', bgColor: '#e5e8eb',
...@@ -37,7 +48,7 @@ ...@@ -37,7 +48,7 @@
fontWeight: 'normal' fontWeight: 'normal'
}); });
$('.percent-blue').percentageLoader({ $('.percent-req').percentageLoader({
valElement: 'p', valElement: 'p',
strokeWidth: 20, strokeWidth: 20,
bgColor: '#e5e8eb', bgColor: '#e5e8eb',
...@@ -51,12 +62,14 @@ ...@@ -51,12 +62,14 @@
<oneit:form name="jobApplication" method="post" enctype="multipart/form-data"> <oneit:form name="jobApplication" method="post" enctype="multipart/form-data">
<div class="dashboard-content-area first-part"> <div class="dashboard-content-area">
<div class="first-part">
<oneit:dynInclude page="/extensions/adminportal/inc/job_title_bar.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/> <oneit:dynInclude page="/extensions/adminportal/inc/job_title_bar.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
</div> </div>
<div class="dashboard-content-area second-part v-applicant-area"> <div class="second-part v-applicant-area">
<oneit:dynInclude page="/extensions/adminportal/inc/view_application_tab_applicant.jsp" data="<%= CollectionUtils.EMPTY_MAP %>"/> <oneit:dynInclude page="/extensions/adminportal/inc/view_application_tab_applicant.jsp" data="<%= CollectionUtils.EMPTY_MAP %>"/>
</div> </div>
</div>
</oneit:form> </oneit:form>
</oneit:dynIncluded> </oneit:dynIncluded>
\ No newline at end of file
...@@ -121,11 +121,7 @@ ...@@ -121,11 +121,7 @@
%> %>
</div> </div>
<p> <p>
Lorem ipsum dolor sit amet, We'll ask you if you have certain skills, qualifications, knowledge, or experience that are somehow important to do this job.
consectetur adipiscing elit. Aenean
semper at magna a tristique. Ut ut
magna ut mauris sagittis placerat.
Suspendisse vitae tempus sem.
</p> </p>
</div> </div>
<% <%
...@@ -153,11 +149,9 @@ ...@@ -153,11 +149,9 @@
%> %>
</div> </div>
<p> <p>
Lorem ipsum dolor sit amet, A job isn't just about what one does, but the environment where one does it.
consectetur adipiscing elit. Aenean This questionnaire will help us both learn what's most important to you in a workplace environment.
semper at magna a tristique. Ut ut There are no right or wrong answers, so please choose what best fits you (not what you think might be right for a particular job).
magna ut mauris sagittis placerat.
Suspendisse vitae tempus sem.
</p> </p>
</div> </div>
<div class="<%= (job.getIncludeAssessmentCriteria() ? "col-sm-4 " : "col-sm-6 app-thired-block " ) + "col-xs-12 app-block eq-height last-border"%>"> <div class="<%= (job.getIncludeAssessmentCriteria() ? "col-sm-4 " : "col-sm-6 app-thired-block " ) + "col-xs-12 app-block eq-height last-border"%>">
...@@ -182,11 +176,9 @@ ...@@ -182,11 +176,9 @@
%> %>
</div> </div>
<p> <p>
Lorem ipsum dolor sit amet, Each of us has preferences and beliefs - and motivations - about the work that we do or seek.
consectetur adipiscing elit. Aenean It's not really about what we're good at doing, but what's right for us... what "fits".
semper at magna a tristique. Ut ut Just like with the workplace preferences questionnaire, there are no right or wrong answers, so please choose what best fits you.
magna ut mauris sagittis placerat.
Suspendisse vitae tempus sem.
</p> </p>
</div> </div>
</div> </div>
......
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta> <meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
<meta name="viewport" content="width=device-width, initial-scale=1"></meta> <meta name="viewport" content="width=device-width, initial-scale=1"></meta>
<title><%= job != null ? job.getPageTitle() : "Talentology" %></title> <title><%= job != null ? job.getPageTitle() : "Talentology" %></title>
<%@include file="/hotjar.jsp" %>
<%@include file="/heapAnalysis.jsp" %>
</head> </head>
<body> <body>
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
if(totalQuestions == null) if(totalQuestions == null)
{ {
totalQuestions = Arrays.asList(Question.searchAll(transaction)); totalQuestions = job.getAllQuestions();
process.setAttribute("TotalQuestions", totalQuestions); process.setAttribute("TotalQuestions", totalQuestions);
} }
...@@ -143,8 +143,8 @@ ...@@ -143,8 +143,8 @@
<p>Using the scale given, indicate how important to you are the following aspects in your work life. Use the following system:</p> <p>Using the scale given, indicate how important to you are the following aspects in your work life. Use the following system:</p>
<ul class="security-level"> <ul class="security-level">
<li><span>1</span> means of very little importance to you</li> <li><span>1</span> means of very little importance to you</li>
<li><span><oneit:toString value="<%= maxRating %>" mode="EscapeHTML"/></span> means about average in importance to you</li> <li><span><oneit:toString value="<%= midRating %>" mode="EscapeHTML"/></span> means about average in importance to you</li>
<li><span><oneit:toString value="<%= midRating %>" mode="EscapeHTML"/></span> means of high importance to you</li> <li><span><oneit:toString value="<%= maxRating %>" mode="EscapeHTML"/></span> means of high importance to you</li>
</ul> </ul>
<p>Use the other numbers (<oneit:toString value="<%= otherRating %>" mode="EscapeHTML"/>) to indicate in-between levels of importance to you.</p> <p>Use the other numbers (<oneit:toString value="<%= otherRating %>" mode="EscapeHTML"/>) to indicate in-between levels of importance to you.</p>
</div> </div>
......
...@@ -2,3 +2,4 @@ ...@@ -2,3 +2,4 @@
#completeCulture = Please complete the culture assessment. #completeCulture = Please complete the culture assessment.
#emailExists = An account already exists with this email address. #emailExists = An account already exists with this email address.
#emailSent = A verification email has been sent to you. Please check your email :). #emailSent = A verification email has been sent to you. Please check your email :).
#alreadyApplied = You have already applied for this job.
...@@ -78,9 +78,7 @@ ...@@ -78,9 +78,7 @@
<div class="section-page-area"> <div class="section-page-area">
<div class="main-sc-section"> <div class="main-sc-section">
<p> <p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean semper at magna a We'll ask you if you have certain skills, qualifications, knowledge, or experience that are somehow important to do this job.
tristique. Ut ut magna ut mauris sagittis placerat. Suspendisse vitae tempus sem. Lorem
ipsum dolor sit amet, consectetur adipiscing elit.
</p> </p>
</div> </div>
<% <%
......
...@@ -21,10 +21,12 @@ ...@@ -21,10 +21,12 @@
String socialLoginNextPage = nextPage + "&JobID=" + job.getID().toString(); String socialLoginNextPage = nextPage + "&JobID=" + job.getID().toString();
%> %>
<script type="text/javascript"> <script type="text/javascript">
var interval;
$(document.body).addClass('bg-color'); $(document.body).addClass('bg-color');
$(document).ready(function() { $(document).ready(function() {
recalcFunction = setupRecalc ($("#applyJob"), {'recalcOnError':true}); recalcFunction = setupRecalc ($("#applyJob"), {'recalcOnError':true});
interval = setInterval(function() { validate(); }, 500);
$('#applyJob').on('keyup keypress', function(e) { $('#applyJob').on('keyup keypress', function(e) {
var keyCode = e.keyCode || e.which; var keyCode = e.keyCode || e.which;
...@@ -33,19 +35,32 @@ ...@@ -33,19 +35,32 @@
return false; return false;
} }
}); });
validate(); validate();
$('input[type="password"]').keyup(function() { $('input[type="password"]').keyup(function() {
validate(); validate();
}); });
$('input[type="text"]').keyup(function() {
$(this).change();
});
}); });
function validate() { function validate() {
if($('input[type="password"]').val() != '') { var empty = false;
$('.sign-in-btn').removeAttr('disabled'); $('input[type="password"]').each(function() {
} else { if ($( this ).val() == '') {
empty = true;
if ($( this ).css('background-color') == 'rgb(250, 255, 189)') {
empty = false;
}
}
});
if (empty) {
$('.sign-in-btn').attr('disabled', 'disabled'); $('.sign-in-btn').attr('disabled', 'disabled');
} else {
$('.sign-in-btn').removeAttr('disabled');
clearInterval(interval);
} }
} }
</script> </script>
...@@ -130,7 +145,7 @@ ...@@ -130,7 +145,7 @@
<div class="form-group text-left" id="email-div"> <div class="form-group text-left" id="email-div">
<label>Email Address</label> <label>Email Address</label>
<oneit:ormInput obj="<%= job %>" type="text" attributeName="Email" cssClass="form-control second-style" style="text-transform: lowercase"/> <oneit:ormInput obj="<%= job %>" type="text" attributeName="Email" cssClass="form-control second-style" style="text-transform: lowercase" autocomplete="off"/>
<oneit:recalcClass htmlTag="div" classScript="job.isEmailFound() ? 'show': 'hide'" job="<%= job %>" class="right-mark"> <oneit:recalcClass htmlTag="div" classScript="job.isEmailFound() ? 'show': 'hide'" job="<%= job %>" class="right-mark">
<span id="right-mark"><img src="images/right-mark.svg"/></span> <span id="right-mark"><img src="images/right-mark.svg"/></span>
</oneit:recalcClass> </oneit:recalcClass>
...@@ -156,6 +171,9 @@ ...@@ -156,6 +171,9 @@
<oneit:recalcClass htmlTag="div" classScript="job.getEmail()==null || job.isEmailFound() ? 'hide': 'show'" job="<%= job %>"> <oneit:recalcClass htmlTag="div" classScript="job.getEmail()==null || job.isEmailFound() ? 'hide': 'show'" job="<%= job %>">
<div class="form-group"> <div class="form-group">
<p>We don't recognize that email address yet, so we'll send a link so that you can create an account.</p>
</div>
<div class="form-group">
<oneit:button value="Send link" name="sendVerificationMail" cssClass="box-btn send-link-btn" <oneit:button value="Send link" name="sendVerificationMail" cssClass="box-btn send-link-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage)
.mapEntry("Job",job) .mapEntry("Job",job)
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS xmlns:oneit="http://www.1iT.com.au" name="">
<NODE factory="Vector" name="Script">
<NODE class="oneit.appservices.upgrade.cms.CMSArticleUpdateOperation" factory="Participant" name="Account Verification Mail">
<createSpecificIdentifier factory='String' value='I90Q26LQURCWXZZFP21EWM3EHUGXTJ'/>
<articleIdentifiers factory="Array" class="java.lang.String">
<NODE factory="String" value="I90Q26LQURCWXZZFP21EWM3EHUGXTJ"/>
</articleIdentifiers>
<createdLabel factory="String" value="I90Q26LQURCWXZZFP21EWM3EHUGXTJ"/>
<newParentCategory factory="String" value="RESOURCE_LIBRARY"/>
<articleAttributeChanges factory="Map">
<NODE name="EmailTo" factory="Null"/>
<NODE name="EmailFrom" factory="String" value="info@talentology.com.au"/>
<NODE name="EmailSubject" factory="String" value="Verify your email"/>
<NODE name="Shortcuts" factory="String" value="AccountVerificationMail"/>
<NODE name="EmailCC" factory="Null"/>
<NODE name="EmailBCC" factory="Null"/>
</articleAttributeChanges>
<ormAttributeChanges factory="Map">
<NODE name="PublishDate" factory="Date" value="2016-02-05 00:00:00"/>
<NODE name="WithdrawDate" factory="Date" value="2066-02-05 16:00:00"/>
<NODE name="Title" factory="String" value="Account Verification Mail"/>
<NODE name="ShortTitle" factory="String" value="Reset Code Email"/>
<NODE name="SortOrder" factory="Integer" value="-200926"/>
<NODE name="Type" factory="Enumerated" class="oneit.business.content.ArticleType" value="ARTICLE"/>
<NODE name="Template" factory="Enumerated" class="oneit.business.content.ArticleTemplate" value="EMAIL_TEMPLATE"/>
</ormAttributeChanges>
<content factory="Map">
<NODE name="EmailBody" factory="Map">
<NODE name="Content" factory="String"><![CDATA[<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="HTML Tidy, see www.w3.org" name="generator">
<title></title>
</head>
<body>
<p>Welcome to Talentology! Your account has been created.</p>
<p>To verify your account, please <a href="${link}">click here</a>.</p>
<p>Thanks :)</p>
</body>
</html>
]]></NODE>
<NODE name="TransformedContent" factory="String"><![CDATA[<p>Welcome to Talentology! Your account has been created.</p><p>To verify your account, please <a href="${link}">click here</a>.</p><p>Thanks :)</p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
</content>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
if(isVerify && (job==null || secUser==null)) if(isVerify && (job==null || secUser==null))
{ {
response.sendRedirect(WebUtils.getSamePageInRenderMode(request, "AuthError")); response.sendRedirect(WebUtils.getSamePageInRenderMode(request, "AuthError"));
return; //Else it will continue execution and throws NPE.
} }
if(secUser==null) if(secUser==null)
...@@ -143,6 +144,16 @@ ...@@ -143,6 +144,16 @@
<label>Confirm password</label> <label>Confirm password</label>
<oneit:ormInput obj="<%= job %>" type="password" attributeName="ConfirmPassword" cssClass="form-control second-style reset-pw " required="true"/> <oneit:ormInput obj="<%= job %>" type="password" attributeName="ConfirmPassword" cssClass="form-control second-style reset-pw " required="true"/>
</div> </div>
<div class="form-group text-left">
<p>
Your password must:
<ul>
<li>* begin with a letter of the alphabet</li>
<li>* include at least one number</li>
<li>* not include any spaces or special characters.</li>
</ul>
</p>
</div>
<% <%
} }
%> %>
......
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
<div class="section-c-title m-hide"> <div class="section-c-title m-hide">
Culture Culture
<span class="estimated-time">Estimated time to complete: <span class="estimated-time">Estimated time to complete:
<span class="estimated-time-20">&nbsp;20 mins</span> <span class="estimated-time-20">&nbsp;5 mins</span>
</span> </span>
</div> </div>
<div class="section-tab-view"> <div class="section-tab-view">
...@@ -103,9 +103,9 @@ ...@@ -103,9 +103,9 @@
<div class="section-page-area"> <div class="section-page-area">
<div class="main-sc-section"> <div class="main-sc-section">
<p> <p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean semper at magna a A job isn't just about what one does, but the environment where one does it.
tristique. Ut ut magna ut mauris sagittis placerat. Suspendisse vitae tempus sem. Lorem This questionnaire will help us both learn what's most important to you in a workplace environment.
ipsum dolor sit amet, consectetur adipiscing elit. There are no right or wrong answers, so please choose what best fits you (not what you think might be right for a particular job).
</p> </p>
</div> </div>
<div class="selection-br-line"></div> <div class="selection-br-line"></div>
......
Add "heap.analysis.id" to keyfile properties.
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS name="" xmlns:oneit="http://www.1iT.com.au">
<NODE name="Script" factory="Vector">
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_job_application" indexName="idx_tl_job_application_CandidateJob" isUnique="true"><column name="candidate_id"/><column name="job_id"/></NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
<script>
var heapAnalysisID = "<%= Utils.HEAP_ANALYSIS_ID %>"
</script>
<oneit:script>
<oneit:script src="/scripts/heapAnalysis.js"/>
</oneit:script>
\ No newline at end of file
<oneit:script>
<oneit:script src="/scripts/hotjar.js"/>
</oneit:script>
\ No newline at end of file
window.heap = window.heap || [], heap.load = function(e, t){window.heap.appid = e, window.heap.config = t = t || {}; var r = t.forceSSL || "https:" === document.location.protocol, a = document.createElement("script"); a.type = "text/javascript", a.async = !0, a.src = (r?"https:":"http:") + "//cdn.heapanalytics.com/js/heap-" + e + ".js"; var n = document.getElementsByTagName("script")[0]; n.parentNode.insertBefore(a, n); for (var o = function(e){return function(){heap.push([e].concat(Array.prototype.slice.call(arguments, 0)))}}, p = ["addEventProperties", "addUserProperties", "clearEventProperties", "identify", "removeEventProperty", "setEventProperties", "track", "unsetEventProperty"], c = 0; c < p.length; c++)heap[p[c]] = o(p[c])};
heap.load(heapAnalysisID);
\ No newline at end of file
//Hotjar Tracking Code for www.talentology.com
(function (h, o, t, j, a, r) {
h.hj = h.hj || function () {
(h.hj.q = h.hj.q || []).push(arguments)
};
h._hjSettings = {hjid: 598700, hjsv: 5};
a = o.getElementsByTagName('head')[0];
r = o.createElement('script');
r.async = 1;
r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;
a.appendChild(r);
})(window, document, '//static.hotjar.com/c/hotjar-', '.js?sv=');
\ No newline at end of file
!function(a){a.fn.percentageLoader=function(b){this.each(function(){function q(){p.customAttributes.arc=function(a,b,c){var h,d=360/b*a,e=(90-d)*Math.PI/180,f=j+c*Math.cos(e),g=k-c*Math.sin(e);return h=b==a?[["M",j,k-c],["A",c,c,0,1,1,j-.01,k-c]]:[["M",j,k-c],["A",c,c,0,+(d>180),1,f,g]],{path:h}},p.path().attr({arc:[100,100,l],"stroke-width":d.strokeWidth,stroke:d.bgColor}),e&&(m=p.path().attr({arc:[.01,100,l],"stroke-width":d.strokeWidth,stroke:d.ringColor,cursor:"pointer"}),r(e,100,l,m,2)),n=p.text(j,k,e+"%").attr({font:d.fontWeight+" "+d.fontSize+" Arial",fill:d.textColor})}function r(a,b,c,d){f?d.animate({arc:[a,b,c]},900,">"):a&&a!=b?d.animate({arc:[a,b,c]},750,"elastic"):(a=b,d.animate({arc:[a,b,c]},750,"bounce",function(){d.attr({arc:[0,b,c]})}))}var c=a(this),d=a.extend({},a.fn.percentageLoader.defaultConfig,b),e=parseInt(c.children(d.valElement).text()),f=!0,h=parseInt(c.css("width")),i=parseInt(c.css("height")),j=h/2,k=i/2,l=j-d.strokeWidth/2,m=null,n=null,p=Raphael(this,h,i);q()})},a.fn.percentageLoader.defaultConfig={valElement:"p",strokeWidth:20,bgColor:"#d9d9d9",ringColor:"#d53f3f",textColor:"#9a9a9a",fontSize:"12px",fontWeight:"normal"}}(jQuery); !function(a){a.fn.percentageLoader=function(b){this.each(function(){function q(){p.customAttributes.arc=function(a,b,c){var h,d=360/b*a,e=(90-d)*Math.PI/180,f=j+c*Math.cos(e),g=k-c*Math.sin(e);return h=b==a?[["M",j,k-c],["A",c,c,0,1,1,j-.01,k-c]]:[["M",j,k-c],["A",c,c,0,+(d>180),1,f,g]],{path:h}},p.path().attr({arc:[100,100,l],"stroke-width":d.strokeWidth,stroke:d.bgColor}),e&&(m=p.path().attr({arc:[.01,100,l],"stroke-width":d.strokeWidth,stroke:d.ringColor,cursor:"pointer"}),r(e,100,l,m,2)),n=p.text(j,k,e+(d.showPercent ? "%" : "")).attr({font:d.fontWeight+" "+d.fontSize+" Arial",fill:d.textColor})}function r(a,b,c,d){f?d.animate({arc:[a,b,c]},900,">"):a&&a!=b?d.animate({arc:[a,b,c]},750,"elastic"):(a=b,d.animate({arc:[a,b,c]},750,"bounce",function(){d.attr({arc:[0,b,c]})}))}var c=a(this),d=a.extend({},a.fn.percentageLoader.defaultConfig,b),e=parseInt(c.children(d.valElement).text()),f=!0,h=parseInt(c.css("width")),i=parseInt(c.css("height")),j=h/2,k=i/2,l=j-d.strokeWidth/2,m=null,n=null,p=Raphael(this,h,i);q()})},a.fn.percentageLoader.defaultConfig={valElement:"p",strokeWidth:20,bgColor:"#d9d9d9",ringColor:"#d53f3f",textColor:"#9a9a9a",fontSize:"12px",fontWeight:"normal",showPercent: true}}(jQuery);
\ No newline at end of file \ No newline at end of file
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
# should be different from the dev build # should be different from the dev build
# #
build.target.dir=${dir.root}/Build/Target/PerformaInvestments build.target.dir=${dir.root}/Build/Target/PerformaInvestments
keywebapp.deploy=/misc/PerformaInvestments/webapps/ROOT keywebapp.deploy=/misc/talentology/webapps/ROOT
keywebapp.target=${dir.root}/Deploy/Target/PerformaInvestments/webapps/ROOT keywebapp.target=${dir.root}/Deploy/Target/PerformaInvestments/webapps/ROOT
...@@ -43,5 +43,9 @@ app.deploy.dir=${keywebapp.deploy}/WEB-INF/apps ...@@ -43,5 +43,9 @@ app.deploy.dir=${keywebapp.deploy}/WEB-INF/apps
# #
cd.deploy.dir=${dir.root}/Deploy/PerformaInvestments/CD_image cd.deploy.dir=${dir.root}/Deploy/PerformaInvestments/CD_image
key.file=${config.deploy.dir}/thor.keyfile.properties key.file=${config.deploy.dir}/production.keyfile.properties
rsync.user=1itupdate
rsync.server=54.153.249.224
tctransform.version=55
rsync.port=40022
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