Commit 7ffe8f1d by Harsh Shah

Culture Fit --> Element level result including color code

parent b7533187
package performa.orm; package performa.orm;
import oneit.utils.StringUtils;
public class CultureNarrative extends BaseCultureNarrative public class CultureNarrative extends BaseCultureNarrative
{ {
...@@ -16,4 +18,10 @@ public class CultureNarrative extends BaseCultureNarrative ...@@ -16,4 +18,10 @@ public class CultureNarrative extends BaseCultureNarrative
{ {
return "CultureNarrative"; return "CultureNarrative";
} }
@Override
public String getToString()
{
return StringUtils.subNulls(getNotes(), super.getToString());
}
} }
\ No newline at end of file
...@@ -312,7 +312,7 @@ public class JobApplication extends BaseJobApplication ...@@ -312,7 +312,7 @@ public class JobApplication extends BaseJobApplication
public Long getCultureFitScore() public Long getCultureFitScore()
{ {
return getCultureFit() != null ? (Long) getCultureFit().get(null) : 0; return getCultureFit() != null && getCultureFit().get(null) != null ? ((Tuple.T2<Long, Set<Tuple.T3>>)getCultureFit().get(null)).get0() : 0L;
} }
public Long getRequirementFitScore() public Long getRequirementFitScore()
......
...@@ -41,6 +41,8 @@ public class ColorCode extends AbstractEnumerated ...@@ -41,6 +41,8 @@ public class ColorCode extends AbstractEnumerated
private transient String CSSClass; private transient String CSSClass;
private transient String DotCSSClass;
private ColorCode (String name, String value, String description, boolean disabled) private ColorCode (String name, String value, String description, boolean disabled)
{ {
super (name, value, description, disabled); super (name, value, description, disabled);
...@@ -61,6 +63,11 @@ public class ColorCode extends AbstractEnumerated ...@@ -61,6 +63,11 @@ public class ColorCode extends AbstractEnumerated
return CSSClass; return CSSClass;
} }
public String getDotCSSClass()
{
return DotCSSClass;
}
public static final Comparator COMPARE_BY_POSITION = new CompareEnumByPosition (allColorCodes); public static final Comparator COMPARE_BY_POSITION = new CompareEnumByPosition (allColorCodes);
...@@ -131,12 +138,15 @@ public class ColorCode extends AbstractEnumerated ...@@ -131,12 +138,15 @@ public class ColorCode extends AbstractEnumerated
RED.ColorRank = 3; RED.ColorRank = 3;
RED.RatingScore = 0; RED.RatingScore = 0;
RED.CSSClass = "red-b"; RED.CSSClass = "red-b";
RED.DotCSSClass = "red-dot";
AMBER.ColorRank = 2; AMBER.ColorRank = 2;
AMBER.RatingScore = 5; AMBER.RatingScore = 5;
AMBER.CSSClass = "yellow-b"; AMBER.CSSClass = "yellow-b";
AMBER.DotCSSClass = "yellow-dot";
GREEN.ColorRank = 1; GREEN.ColorRank = 1;
GREEN.RatingScore = 10; GREEN.RatingScore = 10;
GREEN.CSSClass = "green-b"; GREEN.CSSClass = "green-b";
GREEN.DotCSSClass = "green-dot";
} }
...@@ -167,6 +177,7 @@ public class ColorCode extends AbstractEnumerated ...@@ -167,6 +177,7 @@ public class ColorCode extends AbstractEnumerated
attribs.put ("ColorRank", ArrayFormatter.toObject(getColorRank())); attribs.put ("ColorRank", ArrayFormatter.toObject(getColorRank()));
attribs.put ("RatingScore", ArrayFormatter.toObject(getRatingScore())); attribs.put ("RatingScore", ArrayFormatter.toObject(getRatingScore()));
attribs.put ("CSSClass", ArrayFormatter.toObject(getCSSClass())); attribs.put ("CSSClass", ArrayFormatter.toObject(getCSSClass()));
attribs.put ("DotCSSClass", ArrayFormatter.toObject(getDotCSSClass()));
return attribs; return attribs;
} }
......
...@@ -6,10 +6,11 @@ ...@@ -6,10 +6,11 @@
<DATA name="ColorRank" type="Integer"/> <DATA name="ColorRank" type="Integer"/>
<DATA name="RatingScore" type="Integer"/> <DATA name="RatingScore" type="Integer"/>
<DATA name="CSSClass" type="String"/> <DATA name="CSSClass" type="String"/>
<DATA name="DotCSSClass" type="String"/>
<VALUE name="RED" value="RED" description="Red" ColorRank="3" RatingScore="0" CSSClass='"red-b"'/> <VALUE name="RED" value="RED" description="Red" ColorRank="3" RatingScore="0" CSSClass='"red-b"' DotCSSClass='"red-dot"'/>
<VALUE name="AMBER" value="AMBER" description="Amber" ColorRank="2" RatingScore="5" CSSClass='"yellow-b"'/> <VALUE name="AMBER" value="AMBER" description="Amber" ColorRank="2" RatingScore="5" CSSClass='"yellow-b"' DotCSSClass='"yellow-dot"'/>
<VALUE name="GREEN" value="GREEN" description="Green" ColorRank="1" RatingScore="10" CSSClass='"green-b"'/> <VALUE name="GREEN" value="GREEN" description="Green" ColorRank="1" RatingScore="10" CSSClass='"green-b"' DotCSSClass='"green-dot"'/>
</CONSTANT> </CONSTANT>
</ROOT> </ROOT>
\ No newline at end of file
...@@ -4,6 +4,7 @@ import java.util.*; ...@@ -4,6 +4,7 @@ import java.util.*;
import oneit.logging.*; import oneit.logging.*;
import oneit.objstore.*; import oneit.objstore.*;
import oneit.objstore.rdbms.filters.*; import oneit.objstore.rdbms.filters.*;
import oneit.objstore.utils.*;
import oneit.utils.*; import oneit.utils.*;
import oneit.utils.filter.*; import oneit.utils.filter.*;
import oneit.utils.math.*; import oneit.utils.math.*;
...@@ -230,7 +231,8 @@ public class AnalysisEngine ...@@ -230,7 +231,8 @@ public class AnalysisEngine
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> analyseAnswers completed for Candidate ", candidate, " Level:", level); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> analyseAnswers completed for Candidate ", candidate, " Level:", level);
} }
public static Map<CultureClass, Long> getCultureFit(Set<CultureCriteriaAnswer> cultureCriteriaAnswers, Job job) //Tuple.T2<Long, Set<Tuple.T3>> ---> T2<Score, List<T3 <WeightingScore, CultureElement, Narrative>>
public static Map<CultureClass, Tuple.T2<Long, Set<Tuple.T3>>> getCultureFit(Set<CultureCriteriaAnswer> cultureCriteriaAnswers, Job job)
{ {
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> getCultureFit called"); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> getCultureFit called");
...@@ -238,16 +240,17 @@ public class AnalysisEngine ...@@ -238,16 +240,17 @@ public class AnalysisEngine
CultureCriteriaAnswer.pipesCultureCriteriaAnswer(cultureCriteriaAnswers).toSelectedQuestion().toNarratives().toCultureElementRating().uniqueVals(); CultureCriteriaAnswer.pipesCultureCriteriaAnswer(cultureCriteriaAnswers).toSelectedQuestion().toNarratives().toCultureElementRating().uniqueVals();
CultureCriteriaAnswer.pipesCultureCriteriaAnswer(cultureCriteriaAnswers).toCultureElement().uniqueVals(); CultureCriteriaAnswer.pipesCultureCriteriaAnswer(cultureCriteriaAnswers).toCultureElement().uniqueVals();
Map<CultureClass, Integer> scoreMap = new HashMap(); Map<CultureClass, Integer> scoreMap = new LinkedHashMap();
Map<CultureClass, Integer> maxScoreMap = new HashMap(); Map<CultureClass, Integer> maxScoreMap = new LinkedHashMap();
Map<CultureClass, Set<Tuple.T3>> elementMap = new LinkedHashMap();
for(CultureClass cultureClass : CultureClass.getCultureClassArray()) for(CultureClass cultureClass : CultureClass.getCultureClassArray())
{ {
scoreMap.put(cultureClass, 0); scoreMap.put(cultureClass, 0);
maxScoreMap.put(cultureClass, 0); maxScoreMap.put(cultureClass, 0);
elementMap.put(cultureClass, new TreeSet<Tuple.T3>());
} }
for(CultureCriteriaAnswer answer : cultureCriteriaAnswers) for(CultureCriteriaAnswer answer : cultureCriteriaAnswers)
{ {
CultureCriteria criteria = answer.getCriteriaJob(job); CultureCriteria criteria = answer.getCriteriaJob(job);
...@@ -273,6 +276,12 @@ public class AnalysisEngine ...@@ -273,6 +276,12 @@ public class AnalysisEngine
{ {
ratingScore = narrative.getColorCode().getRatingScore(); ratingScore = narrative.getColorCode().getRatingScore();
} }
Tuple.T3 tuple = new Tuple.T3(weightingScore, element, narrative);
tuple.setComparatorForIndex(CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST), 0);
tuple.setComparatorForIndex(ObjectComparator.BY_ID, 1);
elementMap.get(cultureClass).add(tuple);
} }
int score = (weightingScore * ratingScore); int score = (weightingScore * ratingScore);
...@@ -285,15 +294,20 @@ public class AnalysisEngine ...@@ -285,15 +294,20 @@ public class AnalysisEngine
} }
Map<CultureClass, Long> cultureFitMap = getFinalFitMap(scoreMap, maxScoreMap); Map<CultureClass, Long> cultureFitMap = getFinalFitMap(scoreMap, maxScoreMap);
Map<CultureClass, Tuple.T2<Long, Set<Tuple.T3>>> finalMap = new LinkedHashMap();
for(CultureClass cultureClass : cultureFitMap.keySet())
{
finalMap.put(cultureClass, new Tuple.T2(cultureFitMap.get(cultureClass), elementMap.get(cultureClass)));
}
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> getCultureFit completed"); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> getCultureFit completed");
return cultureFitMap; return finalMap;
} }
private static <T> Map<T, Long> getFinalFitMap(Map<T, Integer> scoreMap, Map<T, Integer> maxScoreMap) private static <T> Map<T, Long> getFinalFitMap(Map<T, Integer> scoreMap, Map<T, Integer> maxScoreMap)
{ {
Map<T, Long> fitMap = new HashMap(); Map<T, Long> fitMap = new LinkedHashMap();
int totalScore = 0; int totalScore = 0;
int totalMaxScore = 0; int totalMaxScore = 0;
......
...@@ -2861,23 +2861,24 @@ span.export-candidate,span.appli-status-short{ ...@@ -2861,23 +2861,24 @@ span.export-candidate,span.appli-status-short{
background-color: #f7f7f8; background-color: #f7f7f8;
box-shadow: inset 1px 0 0 0 #dddddd; box-shadow: inset 1px 0 0 0 #dddddd;
} }
.red-dot{ .common-dot{
width: 12px; width: 12px;
height: 12px; height: 12px;
background-color: #fabdc1;
border:1px solid #fb5d67;
display: inline-block; display: inline-block;
border-radius: 50%; border-radius: 50%;
vertical-align: middle; vertical-align: middle;
} }
.red-dot{
background-color: #fabdc1;
border:1px solid #fb5d67;
}
.yellow-dot{ .yellow-dot{
background-color: #fbe7a1; background-color: #fbe7a1;
border: 1px solid #fbc712; border: 1px solid #fbc712;
width: 12px; }
height: 12px; .green-dot{
display: inline-block; background-color: #8CE2DB;
border-radius: 50%; border: 1px solid #47BBB3;
vertical-align: middle;
} }
.text-dot-dot{ .text-dot-dot{
overflow: hidden; overflow: hidden;
......
...@@ -111,18 +111,18 @@ ...@@ -111,18 +111,18 @@
<div class="row four-label"> <div class="row four-label">
<div class="col-md-6 col-sm-6 col-xs-6 text-left"> <div class="col-md-6 col-sm-6 col-xs-6 text-left">
<div class="a-label-row"> <div class="a-label-row">
<span class="yellow-dot"></span><span class="r-y-label text-dot-dot">Achievement</span> <span class="common-dot yellow-dot"></span><span class="r-y-label text-dot-dot">Achievement</span>
</div> </div>
<div class="a-label-row"> <div class="a-label-row">
<span class="red-dot"></span><span class="r-y-label text-dot-dot">Item with a long ti</span> <span class="common-dot red-dot"></span><span class="r-y-label text-dot-dot">Item with a long ti</span>
</div> </div>
</div> </div>
<div class="col-md-6 col-sm-6 col-xs-6 text-left"> <div class="col-md-6 col-sm-6 col-xs-6 text-left">
<div class="a-label-row"> <div class="a-label-row">
<span class="yellow-dot"></span><span class="r-y-label text-dot-dot">Remuneration</span> <span class="common-dot yellow-dot"></span><span class="r-y-label text-dot-dot">Remuneration</span>
</div> </div>
<div class="a-label-row"> <div class="a-label-row">
<span class="red-dot"></span><span class="r-y-label text-dot-dot">Item title</span> <span class="common-dot red-dot"></span><span class="r-y-label text-dot-dot">Item title</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -135,15 +135,15 @@ ...@@ -135,15 +135,15 @@
<div class="row four-label"> <div class="row four-label">
<div class="col-md-6 col-sm-6 col-xs-6 text-left"> <div class="col-md-6 col-sm-6 col-xs-6 text-left">
<div class="a-label-row"> <div class="a-label-row">
<span class="yellow-dot"></span><span class="r-y-label text-dot-dot">Achievement</span> <span class="common-dot yellow-dot"></span><span class="r-y-label text-dot-dot">Achievement</span>
</div> </div>
<div class="a-label-row"> <div class="a-label-row">
<span class="red-dot"></span><span class="r-y-label text-dot-dot">Item title</span> <span class="common-dot red-dot"></span><span class="r-y-label text-dot-dot">Item title</span>
</div> </div>
</div> </div>
<div class="col-md-6 col-sm-6 col-xs-6 text-left"> <div class="col-md-6 col-sm-6 col-xs-6 text-left">
<div class="a-label-row"> <div class="a-label-row">
<span class="yellow-dot"></span><span class="r-y-label text-dot-dot">Remuneration</span> <span class="common-dot yellow-dot"></span><span class="r-y-label text-dot-dot">Remuneration</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -160,13 +160,13 @@ ...@@ -160,13 +160,13 @@
<div class="row four-label"> <div class="row four-label">
<div class="col-md-6 col-sm-6 col-xs-6 text-left"> <div class="col-md-6 col-sm-6 col-xs-6 text-left">
<div class="a-label-row"> <div class="a-label-row">
<span class="yellow-dot"></span><span class="r-y-label text-dot-dot">Item title</span> <span class="common-dot yellow-dot"></span><span class="r-y-label text-dot-dot">Item title</span>
</div> </div>
<div class="a-label-row">&nbsp;</div> <div class="a-label-row">&nbsp;</div>
</div> </div>
<div class="col-md-6 col-sm-6 col-xs-6 text-left"> <div class="col-md-6 col-sm-6 col-xs-6 text-left">
<div class="a-label-row"> <div class="a-label-row">
<span class="red-dot"></span><span class="r-y-label text-dot-dot">Item title</span> <span class="common-dot red-dot"></span><span class="r-y-label text-dot-dot">Item title</span>
</div> </div>
<div class="a-label-row">&nbsp;</div> <div class="a-label-row">&nbsp;</div>
</div> </div>
...@@ -254,17 +254,16 @@ ...@@ -254,17 +254,16 @@
</div> </div>
<div class="tab-pane" id="2a"> <div class="tab-pane" id="2a">
<% <%
MultiHashtable<CultureClass, CultureCriteriaAnswer> cultureAnswersByClass = jobApplication.getCultureAnswersByClass(); Map<CultureClass, Tuple.T2<Long, Set<Tuple.T3>>> cultureFitData = (Map<CultureClass, Tuple.T2<Long, Set<Tuple.T3>>>) jobApplication.getCultureFit();
Map<CultureClass, Long> cultureFitData = (Map<CultureClass, Long>)jobApplication.getCultureFit();
for(CultureClass cClass: cultureFitData.keySet()) for(CultureClass cClass: cultureFitData.keySet())
{ {
if(cClass==null) if(cClass == null || cultureFitData.get(cClass) == null)
{ {
continue; continue;
} }
Long rating = cultureFitData.get(cClass); Long rating = cultureFitData.get(cClass).get0();
%> %>
<div class="main-pro-bar"> <div class="main-pro-bar">
<div class="pro-bar"> <div class="pro-bar">
...@@ -281,16 +280,19 @@ ...@@ -281,16 +280,19 @@
</div> </div>
<div class="expand-hide-tag"> <div class="expand-hide-tag">
<% <%
for(CultureCriteriaAnswer answer: cultureAnswersByClass.getValuesForKey(cClass)) for(Tuple.T3 tuple : cultureFitData.get(cClass).get1())
{ {
CultureNarrative cultureNarrative = (CultureNarrative) tuple.get2();
String dotClass = cultureNarrative != null && cultureNarrative.getColorCode() != null ? cultureNarrative.getColorCode().getDotCSSClass() : "";
%> %>
<div class="tab-row"> <div class="tab-row">
<div class="tab-view-label"> <div class="tab-view-label">
<oneit:toString value="<%= answer.getCultureElement() %>" mode="EscapeHTML"/> <span class="common-dot <%= dotClass %>"></span>
<oneit:toString value="<%= tuple.get1() %>" mode="EscapeHTML"/>
</div> </div>
<div class="tab-view-side"> <div class="tab-view-side">
<div class="like-strive" style="margin-top: 20px;"> <div class="like-strive" style="margin-top: 20px;">
<oneit:toString value="<%= answer.getSelectedQuestion().getDescription() %>" mode="EscapeHTML"/> <oneit:toString value="<%= cultureNarrative %>" mode="EscapeHTML"/>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -148,6 +148,8 @@ ...@@ -148,6 +148,8 @@
<% <%
for(FactorClass factorClass : jobApplication.getSortedFactorClasses()) for(FactorClass factorClass : jobApplication.getSortedFactorClasses())
{ {
if(factorClass != null && roleScoreMap.get(factorClass) != null)
{
%> %>
<div class="detail-row"> <div class="detail-row">
<div class="detail-label"> <div class="detail-label">
...@@ -159,6 +161,7 @@ ...@@ -159,6 +161,7 @@
</div> </div>
<% <%
} }
}
%> %>
</div> </div>
<div class="culture jcc"> <div class="culture jcc">
...@@ -174,7 +177,7 @@ ...@@ -174,7 +177,7 @@
</div> </div>
<div class="detail-box"> <div class="detail-box">
<% <%
Map<CultureClass, Long> cultureFitData = (Map<CultureClass, Long>)jobApplication.getCultureFit(); Map<CultureClass, Tuple.T2<Long, Set<Tuple.T3>>> cultureFitData = (Map<CultureClass, Tuple.T2<Long, Set<Tuple.T3>>>)jobApplication.getCultureFit();
for(CultureClass cClass: cultureFitData.keySet()) for(CultureClass cClass: cultureFitData.keySet())
{ {
...@@ -185,7 +188,7 @@ ...@@ -185,7 +188,7 @@
%> %>
<div class="detail-row"> <div class="detail-row">
<div class="detail-label"><oneit:toString value="<%= cClass %>" mode="EscapeHTML"/></div> <div class="detail-label"><oneit:toString value="<%= cClass %>" mode="EscapeHTML"/></div>
<div class="detail-no green"><oneit:toString value="<%= cultureFitData.get(cClass) %>" mode="WholeNumber" /></div> <div class="detail-no green"><oneit:toString value="<%= cultureFitData.get(cClass) != null ? cultureFitData.get(cClass).get0() : 0 %>" mode="WholeNumber" /></div>
</div> </div>
<% <%
} }
......
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