Created
December 31, 2019 09:18
-
-
Save dennyjohnk/525532d8b5d14f853ea69f04c9f574c0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function () { | |
app.service('SlaService', function () { | |
var slaStatus = [ | |
{ | |
"status": "EXECUTED", | |
"responseColor": "#5cb85c", | |
"resolutionColor" : "#5cb85c", | |
"timeFormat": 1, | |
"friendlyName": "ON-TIME", | |
'helpTextResponse' : 'Ticket Responded in XX', | |
'helpTextResolution' : 'Ticket Resolved in XX' | |
}, | |
{ | |
"status": "BREACHED", | |
"responseColor": "#d9534f", | |
"resolutionColor" : "#d9534f", | |
"timeFormat": 2, | |
"friendlyName": "OVERDUE BY", | |
'helpTextResponse' : 'Ticket not responded within SLA and overdue by XX', | |
'helpTextResolution' : 'Ticket not resolved within SLA and overdue by XX' | |
}, | |
{ | |
"status": "BREACHED_EXECUTED", | |
"responseColor": "#98b10d", | |
"resolutionColor" : "#98b10d", | |
"timeFormat": 2, | |
"friendlyName": "OVERTIME BY", | |
'helpTextResponse' : 'Ticket Responded with overtime of XX', | |
'helpTextResolution' : 'Ticket Resolved with overtime of XX' | |
}, | |
{ | |
"status": "PAUSED", | |
"responseColor": "#5bc0de", | |
"resolutionColor" : "#5bc0de", | |
"timeFormat": 1, | |
"friendlyName": "PAUSED", | |
'helpTextResponse' : 'SLA is paused', | |
'helpTextResolution' : 'SLA is paused' | |
}, | |
{ | |
"status": "DEVIATED", | |
"responseColor": "#555555", | |
"resolutionColor": "#555555", | |
"timeFormat": 3, | |
"friendlyName": "SLA N/A", | |
'helpTextResponse' : 'Response time elapsed, SLA not applicable', | |
'helpTextResolution' : 'Resolution time elapsed, SLA not applicable' | |
}, | |
{ | |
"status": "RUNNING", | |
"responseColor": "#e2790d", | |
"resolutionColor": "#e2790d", | |
"timeFormat": 4, | |
"friendlyName": "DUE IN", | |
'helpTextResponse' : 'Ticket Response due in XX', | |
'helpTextResolution' : 'Ticket Resolution due in XX' | |
} | |
]; | |
return { | |
generateSlaData: function (data) { | |
if (!data) | |
return; | |
var slaData = data; | |
var obj = slaStatus.filter(function (obj) { return obj.status === slaData.status; }) | |
.map(function (item) { | |
var time = convertSlaTime(slaData.maxTime, slaData.usedTime, item.timeFormat); | |
var helpTextTime = convertSlaTimeForHelptext(slaData.maxTime, slaData.usedTime, item.timeFormat); | |
var data = { | |
'name': item.friendlyName, | |
'time': time, | |
'responseColor': item.responseColor, | |
'resolutionColor' : item.resolutionColor, | |
'helpTextResponse' : item.helpTextResponse.replace('XX', helpTextTime), | |
'helpTextResolution' : item.helpTextResolution.replace('XX', helpTextTime) | |
}; | |
return data; | |
}); | |
function convertSlaTime(maxTime, usedTime, timeFormat) { | |
if (timeFormat === 1) { | |
return minuteConverter(usedTime); | |
} | |
else if (timeFormat === 2) { | |
return minuteConverter(usedTime - maxTime); | |
} | |
else if (timeFormat === 3) { | |
return '- -'; | |
} | |
else if (timeFormat === 4) { | |
return minuteConverter(maxTime - usedTime); | |
} | |
} | |
function minuteConverter(minutes) { | |
var day = Math.floor((minutes / 1440)); | |
var hrs = Math.floor((minutes % 1440) / 60); | |
var min = getMin(); | |
function getMin(){ | |
var data = Math.round((minutes % 60)); | |
if(data < 1) | |
return '< 1 '; | |
else | |
return data; | |
} | |
var dayString = '<span class="text-bold">' + day + '</span>' + '<span class="text-light">d </span>'; | |
var hrsString = '<span class="text-bold">' + hrs + '</span>' + '<span class="text-light">h </span>'; | |
var minString = '<span class="text-bold">' + min + '</span>' + '<span class="text-light">m </span>'; | |
if (day === 0 & hrs !== 0 & min !== '< 1 ') { | |
return hrsString + minString; | |
} | |
else if (day === 0 & hrs !== 0 & min == '< 1 ') { | |
return hrsString; | |
} | |
else if (day === 0 & hrs === 0) { | |
return minString; | |
} | |
else if (day > 0 & min == '< 1 ') { | |
return dayString + hrsString; | |
} | |
else if (day > 0 ) { | |
return dayString + hrsString + minString; | |
} | |
} | |
/** | |
* | |
* Help text data | |
*/ | |
function convertSlaTimeForHelptext(maxTime, usedTime, timeFormat) { | |
if (timeFormat === 1) { | |
return minuteConverterForHelptext(usedTime); | |
} | |
else if (timeFormat === 2) { | |
return minuteConverterForHelptext(usedTime - maxTime); | |
} | |
else if (timeFormat === 3) { | |
return '- -'; | |
} | |
else if (timeFormat === 4) { | |
return minuteConverterForHelptext(maxTime - usedTime); | |
} | |
} | |
function minuteConverterForHelptext(minutes) { | |
var day = Math.floor((minutes / 1440)); | |
var hrs = Math.floor((minutes % 1440) / 60); | |
var min = getMin(); | |
function getMin(){ | |
var data = Math.round((minutes % 60)); | |
if(data < 1) | |
return '< 1 '; | |
else | |
return data; | |
} | |
var dayString = day + 'd '; | |
var hrsString = hrs + 'h '; | |
var minString = min + 'm '; | |
if (day === 0 & hrs !== 0 & min !== '< 1 ') { | |
return hrsString + minString; | |
} | |
else if (day === 0 & hrs !== 0 & min == '< 1 ') { | |
return hrsString; | |
} | |
else if (day === 0 & hrs === 0) { | |
return minString; | |
} | |
else if (day > 0 & min == '< 1 ') { | |
return dayString + hrsString; | |
} | |
else if (day > 0 ) { | |
return dayString + hrsString + minString; | |
} | |
} | |
return obj[0]; | |
} | |
}; | |
}); | |
}()); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment