1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-23 15:29:42 +02:00

feat(service): change update delay format to a time string in service… (#1470)

This commit is contained in:
Miguel A. C 2017-12-05 20:12:54 +01:00 committed by Anthony Lapenna
parent f3a23c7dd1
commit 728ef35cc1
5 changed files with 62 additions and 9 deletions

View file

@ -141,5 +141,55 @@ angular.module('portainer.helpers').factory('ServiceHelper', [function ServiceHe
}
};
helper.translateHumanDurationToNanos = function(humanDuration) {
var nanos = 0;
var regex = /^([0-9]+)(h|m|s|ms|us|ns)$/i;
var matches = humanDuration.match(regex);
if (matches !== null && matches.length === 3) {
var duration = parseInt(matches[1], 10);
var unit = matches[2];
// Moment.js cannot use micro or nanoseconds
switch (unit) {
case 'ns':
nanos = duration;
break;
case 'us':
nanos = duration * 1000;
break;
default:
nanos = moment.duration(duration, unit).asMilliseconds() * 1000000;
}
}
return nanos;
};
// Convert nanoseconds to the higher unit possible
// e.g 1840 nanoseconds = 1804ns
// e.g 300000000000 nanoseconds = 5m
// e.g 3510000000000 nanoseconds = 3510s
// e.g 3540000000000 nanoseconds = 59m
// e.g 3600000000000 nanoseconds = 1h
helper.translateNanosToHumanDuration = function(nanos) {
var humanDuration = '0s';
var conversionFromNano = {};
conversionFromNano['ns'] = 1;
conversionFromNano['us'] = conversionFromNano['ns'] * 1000;
conversionFromNano['ms'] = conversionFromNano['us'] * 1000;
conversionFromNano['s'] = conversionFromNano['ms'] * 1000;
conversionFromNano['m'] = conversionFromNano['s'] * 60;
conversionFromNano['h'] = conversionFromNano['m'] * 60;
Object.keys(conversionFromNano).forEach(function(unit) {
if ( nanos % conversionFromNano[unit] === 0 && (nanos / conversionFromNano[unit]) > 0) {
humanDuration = (nanos / conversionFromNano[unit]) + unit;
}
});
return humanDuration;
};
return helper;
}]);