Commit 7ffe8f1d by Harsh Shah

Culture Fit --> Element level result including color code

parent b7533187
package performa.orm;
import oneit.utils.StringUtils;
public class CultureNarrative extends BaseCultureNarrative
{
......@@ -16,4 +18,10 @@ public class CultureNarrative extends BaseCultureNarrative
{
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
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()
......
......@@ -41,6 +41,8 @@ public class ColorCode extends AbstractEnumerated
private transient String CSSClass;
private transient String DotCSSClass;
private ColorCode (String name, String value, String description, boolean disabled)
{
super (name, value, description, disabled);
......@@ -61,6 +63,11 @@ public class ColorCode extends AbstractEnumerated
return CSSClass;
}
public String getDotCSSClass()
{
return DotCSSClass;
}
public static final Comparator COMPARE_BY_POSITION = new CompareEnumByPosition (allColorCodes);
......@@ -131,12 +138,15 @@ public class ColorCode extends AbstractEnumerated
RED.ColorRank = 3;
RED.RatingScore = 0;
RED.CSSClass = "red-b";
RED.DotCSSClass = "red-dot";
AMBER.ColorRank = 2;
AMBER.RatingScore = 5;
AMBER.CSSClass = "yellow-b";
AMBER.DotCSSClass = "yellow-dot";
GREEN.ColorRank = 1;
GREEN.RatingScore = 10;
GREEN.CSSClass = "green-b";
GREEN.DotCSSClass = "green-dot";
}
......@@ -167,6 +177,7 @@ public class ColorCode extends AbstractEnumerated
attribs.put ("ColorRank", ArrayFormatter.toObject(getColorRank()));
attribs.put ("RatingScore", ArrayFormatter.toObject(getRatingScore()));
attribs.put ("CSSClass", ArrayFormatter.toObject(getCSSClass()));
attribs.put ("DotCSSClass", ArrayFormatter.toObject(getDotCSSClass()));
return attribs;
}
......
......@@ -6,10 +6,11 @@
<DATA name="ColorRank" type="Integer"/>
<DATA name="RatingScore" type="Integer"/>
<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="AMBER" value="AMBER" description="Amber" ColorRank="2" RatingScore="5" CSSClass='"yellow-b"'/>
<VALUE name="GREEN" value="GREEN" description="Green" ColorRank="1" RatingScore="10" CSSClass='"green-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"' DotCSSClass='"yellow-dot"'/>
<VALUE name="GREEN" value="GREEN" description="Green" ColorRank="1" RatingScore="10" CSSClass='"green-b"' DotCSSClass='"green-dot"'/>
</CONSTANT>
</ROOT>
\ No newline at end of file
......@@ -4,6 +4,7 @@ import java.util.*;
import oneit.logging.*;
import oneit.objstore.*;
import oneit.objstore.rdbms.filters.*;
import oneit.objstore.utils.*;
import oneit.utils.*;
import oneit.utils.filter.*;
import oneit.utils.math.*;
......@@ -230,7 +231,8 @@ public class AnalysisEngine
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");
......@@ -238,16 +240,17 @@ public class AnalysisEngine
CultureCriteriaAnswer.pipesCultureCriteriaAnswer(cultureCriteriaAnswers).toSelectedQuestion().toNarratives().toCultureElementRating().uniqueVals();
CultureCriteriaAnswer.pipesCultureCriteriaAnswer(cultureCriteriaAnswers).toCultureElement().uniqueVals();
Map<CultureClass, Integer> scoreMap = new HashMap();
Map<CultureClass, Integer> maxScoreMap = new HashMap();
Map<CultureClass, Integer> scoreMap = new LinkedHashMap();
Map<CultureClass, Integer> maxScoreMap = new LinkedHashMap();
Map<CultureClass, Set<Tuple.T3>> elementMap = new LinkedHashMap();
for(CultureClass cultureClass : CultureClass.getCultureClassArray())
{
scoreMap.put(cultureClass, 0);
maxScoreMap.put(cultureClass, 0);
elementMap.put(cultureClass, new TreeSet<Tuple.T3>());
}
for(CultureCriteriaAnswer answer : cultureCriteriaAnswers)
{
CultureCriteria criteria = answer.getCriteriaJob(job);
......@@ -273,6 +276,12 @@ public class AnalysisEngine
{
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);
......@@ -285,15 +294,20 @@ public class AnalysisEngine
}
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");
return cultureFitMap;
return finalMap;
}
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 totalMaxScore = 0;
......
......@@ -2861,23 +2861,24 @@ span.export-candidate,span.appli-status-short{
background-color: #f7f7f8;
box-shadow: inset 1px 0 0 0 #dddddd;
}
.red-dot{
.common-dot{
width: 12px;
height: 12px;
background-color: #fabdc1;
border:1px solid #fb5d67;
display: inline-block;
border-radius: 50%;
vertical-align: middle;
}
.red-dot{
background-color: #fabdc1;
border:1px solid #fb5d67;
}
.yellow-dot{
background-color: #fbe7a1;
border: 1px solid #fbc712;
width: 12px;
height: 12px;
display: inline-block;
border-radius: 50%;
vertical-align: middle;
}
.green-dot{
background-color: #8CE2DB;
border: 1px solid #47BBB3;
}
.text-dot-dot{
overflow: hidden;
......
......@@ -111,18 +111,18 @@
<div class="row four-label">
<div class="col-md-6 col-sm-6 col-xs-6 text-left">
<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 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 class="col-md-6 col-sm-6 col-xs-6 text-left">
<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 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>
......@@ -135,15 +135,15 @@
<div class="row four-label">
<div class="col-md-6 col-sm-6 col-xs-6 text-left">
<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 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="col-md-6 col-sm-6 col-xs-6 text-left">
<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>
......@@ -160,13 +160,13 @@
<div class="row four-label">
<div class="col-md-6 col-sm-6 col-xs-6 text-left">
<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 class="a-label-row">&nbsp;</div>
</div>
<div class="col-md-6 col-sm-6 col-xs-6 text-left">
<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 class="a-label-row">&nbsp;</div>
</div>
......@@ -254,17 +254,16 @@
</div>
<div class="tab-pane" id="2a">
<%
MultiHashtable<CultureClass, CultureCriteriaAnswer> cultureAnswersByClass = jobApplication.getCultureAnswersByClass();
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())
{
if(cClass==null)
if(cClass == null || cultureFitData.get(cClass) == null)
{
continue;
}
Long rating = cultureFitData.get(cClass);
Long rating = cultureFitData.get(cClass).get0();
%>
<div class="main-pro-bar">
<div class="pro-bar">
......@@ -281,16 +280,19 @@
</div>
<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-view-label">
<oneit:toString value="<%= answer.getCultureElement() %>" mode="EscapeHTML"/>
<span class="common-dot <%= dotClass %>"></span>
<oneit:toString value="<%= tuple.get1() %>" mode="EscapeHTML"/>
</div>
<div class="tab-view-side">
<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>
......
......@@ -148,6 +148,8 @@
<%
for(FactorClass factorClass : jobApplication.getSortedFactorClasses())
{
if(factorClass != null && roleScoreMap.get(factorClass) != null)
{
%>
<div class="detail-row">
<div class="detail-label">
......@@ -159,6 +161,7 @@
</div>
<%
}
}
%>
</div>
<div class="culture jcc">
......@@ -174,7 +177,7 @@
</div>
<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())
{
......@@ -185,7 +188,7 @@
%>
<div class="detail-row">
<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>
<%
}
......
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