Created
April 10, 2020 06:27
-
-
Save dennyjohnk/5cbfa5c081c589d87155933ebf76ccad 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