Display Human-readable timeout in Manual Task popup
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / modals / change-management-manual-tasks-controller / change-management-manual-tasks.controller.js
index c4f8f14..38096a5 100644 (file)
@@ -22,9 +22,9 @@
     'use strict';
 
     appDS2.controller("changeManagementManualTasksController", ["$uibModalInstance", "jobInfo", "MsoService", "COMPONENT",
-        "$log", changeManagementManualTasksController]);
+        "$log", "moment", changeManagementManualTasksController]);
 
-    function changeManagementManualTasksController($uibModalInstance, jobInfo, MsoService, COMPONENT, $log) {
+    function changeManagementManualTasksController($uibModalInstance, jobInfo, MsoService, COMPONENT, $log, moment) {
         var vm = this;
 
         vm.manualTasks = [];
             return vm.manualTasks.includes(task);
         };
 
+        vm.timeoutHumanized = function() {
+            // moment.duration() can parse ISO 8601 time-intervals,
+            // e.g. "P1Y2M10DT2H30M"
+            // https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
+            let duration = moment.duration(vm.timeout);
+
+            return isDurationValid()
+                ? durationAsHoursAndMinutes() + ' hours (' + vm.timeout + ')'
+                : vm.timeout;
+
+
+            function isDurationValid() {
+                return duration.isValid() && duration.toISOString() !== 'P0D';
+            }
+
+            function durationAsHoursAndMinutes() {
+                return ''
+                    + Math.floor(duration.asHours())
+                    + ':'
+                    + withLeadingZero(duration.minutes());
+            }
+
+            function withLeadingZero(x) {
+                return ("00" + Math.round(x)).slice(-2);
+            }
+        };
+
         vm.__test_only__ = {
             loadAvailableTasks: loadAvailableTasks,
         };