mirror of
https://github.com/JuanCanham/HackMyResume.git
synced 2024-11-25 01:40:10 +00:00
Analyze: fix coverage percentage glitch.
This commit is contained in:
parent
1d655a4ddb
commit
cba29511bc
@ -86,15 +86,19 @@ Employment gap analysis for HackMyResume.
|
|||||||
// When the reference count is > 0, the candidate is employed. When the
|
// When the reference count is > 0, the candidate is employed. When the
|
||||||
// reference count reaches 2, the candidate is overlapped.
|
// reference count reaches 2, the candidate is overlapped.
|
||||||
|
|
||||||
var num_gaps = 0, ref_count = 0, total_gap_days = 0, total_work_days = 0
|
var num_gaps = 0, ref_count = 0, total_gap_days = 0, gap_start;
|
||||||
, gap_start;
|
|
||||||
|
|
||||||
new_e.forEach( function(point) {
|
new_e.forEach( function(point) {
|
||||||
|
|
||||||
var inc = point[0] === 'start' ? 1 : -1;
|
var inc = point[0] === 'start' ? 1 : -1;
|
||||||
ref_count += inc;
|
ref_count += inc;
|
||||||
|
|
||||||
|
// If the ref count just reached 0, start a new GAP
|
||||||
if( ref_count === 0 ) {
|
if( ref_count === 0 ) {
|
||||||
coverage.gaps.push( { start: point[1], end: null });
|
coverage.gaps.push( { start: point[1], end: null });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the ref count reached 1 by rising, end the last GAP
|
||||||
else if( ref_count === 1 && inc === 1 ) {
|
else if( ref_count === 1 && inc === 1 ) {
|
||||||
var lastGap = _.last( coverage.gaps );
|
var lastGap = _.last( coverage.gaps );
|
||||||
if( lastGap ) {
|
if( lastGap ) {
|
||||||
@ -103,9 +107,13 @@ Employment gap analysis for HackMyResume.
|
|||||||
total_gap_days += lastGap.duration;
|
total_gap_days += lastGap.duration;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the ref count reaches 2 by rising, start a new OVERLAP
|
||||||
else if( ref_count === 2 && inc === 1 ) {
|
else if( ref_count === 2 && inc === 1 ) {
|
||||||
coverage.overlaps.push( { start: point[1], end: null });
|
coverage.overlaps.push( { start: point[1], end: null });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the ref count reaches 1 by falling, end the last OVERLAP
|
||||||
else if( ref_count === 1 && inc === -1 ) {
|
else if( ref_count === 1 && inc === -1 ) {
|
||||||
var lastOver = _.last( coverage.overlaps );
|
var lastOver = _.last( coverage.overlaps );
|
||||||
if( lastOver ) {
|
if( lastOver ) {
|
||||||
@ -114,32 +122,39 @@ Employment gap analysis for HackMyResume.
|
|||||||
if( lastOver.duration === 0 ) {
|
if( lastOver.duration === 0 ) {
|
||||||
coverage.overlaps.pop();
|
coverage.overlaps.pop();
|
||||||
}
|
}
|
||||||
total_work_days += lastOver.duration;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// It's possible that the last overlap didn't have an explicit .end date.
|
// It's possible that the last gap/overlap didn't have an explicit .end
|
||||||
// If so, set the end date to the present date and compute the overlap
|
// date.If so, set the end date to the present date and compute the
|
||||||
// duration normally.
|
// duration normally.
|
||||||
if( coverage.overlaps.length ) {
|
if( coverage.overlaps.length ) {
|
||||||
if( !_.last( coverage.overlaps ).end ) {
|
var l = _.last( coverage.overlaps );
|
||||||
var l = _.last( coverage.overlaps );
|
if( l && !l.end ) {
|
||||||
|
l.end = moment();
|
||||||
|
l.duration = l.end.diff( l.start, 'days' );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( coverage.gaps.length ) {
|
||||||
|
var l = _.last( coverage.gaps );
|
||||||
|
if( l && !l.end ) {
|
||||||
l.end = moment();
|
l.end = moment();
|
||||||
l.duration = l.end.diff( l.start, 'days' );
|
l.duration = l.end.diff( l.start, 'days' );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Package data for return to the client
|
||||||
|
var tdur = rez.duration('days');
|
||||||
var dur = {
|
var dur = {
|
||||||
total: rez.duration('days'),
|
total: tdur,
|
||||||
work: total_work_days,
|
work: tdur - total_gap_days,
|
||||||
gaps: total_gap_days
|
gaps: total_gap_days
|
||||||
};
|
};
|
||||||
coverage.pct = ( dur.total > 0 && dur.work > 0 ) ?
|
coverage.pct = ( dur.total > 0 && dur.work > 0 ) ?
|
||||||
((((dur.total - dur.gaps) / dur.total) * 100)).toFixed(1) + '%' :
|
((((dur.total - dur.gaps) / dur.total) * 100)).toFixed(1) + '%' :
|
||||||
'???';
|
'???';
|
||||||
coverage.duration = dur;
|
coverage.duration = dur;
|
||||||
|
|
||||||
return coverage;
|
return coverage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user