Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

define(['app', 'angular'], function (app) {

'use strict'

/**
* A filter for friendly line truncation, truncating at the first word break before the length and appending an ellipsis.
*
* @param length The number of characters to allow before truncating.
* @param preserve An optional text substring in the line to preserve, by having an internal ellipsis if needed.
* @return string,
*/
app.filter('limitLength', function() {

var ellipsis = '…';

function truncateValue(value, length, preserve) {
var preserveIndex = preserve ? value.toLowerCase().indexOf(preserve.toLowerCase()) : -1;
var chopIndex = value.lastIndexOf(' ', length);
if (chopIndex === -1)
chopIndex = length;
var endPreserveIndex = preserveIndex !== -1 ? value.indexOf(' ', preserveIndex + preserve.length) : -1;
if (endPreserveIndex !== -1 && endPreserveIndex <= chopIndex)
preserveIndex = -1;
if (preserveIndex === -1)
return value.substr(0, chopIndex) + ellipsis;
else {
preserveIndex = value.lastIndexOf(' ', preserveIndex) + 1;
if (endPreserveIndex === -1)
endPreserveIndex = value.length;
var endEllipsis = (value.length - endPreserveIndex) > 3;
var preserveLength = endPreserveIndex - preserveIndex + 3;
if (endEllipsis)
preserveLength += 3;
if (preserveLength > length) {
preserveLength = length;
preserveIndex = (endPreserveIndex - length) + 3;
if (endEllipsis)
preserveIndex += 3;
}
chopIndex = value.lastIndexOf(' ', length - preserveLength);
if (chopIndex === -1)
chopIndex = length - preserveLength;
var result = ellipsis;
if (endEllipsis)
result += value.substring(preserveIndex, endPreserveIndex) + ellipsis;
else
result += value.substring(preserveIndex);
if (chopIndex > 0)
result = value.substr(0, chopIndex) + result;
return result;
}
}

return function(value, length, preserve) {
return value.length > length ? truncateValue(value, length, preserve) : value;
};
});

});