Codebase list python-faraday / 65a0d9d server / www / scripts / dashboard / controllers / workspaceProgressCtrl.js
65a0d9d

Tree @65a0d9d (Download .tar.gz)

workspaceProgressCtrl.js @65a0d9draw · history · blame

// Faraday Penetration Test IDE
// Copyright (C) 2013  Infobyte LLC (http://www.infobytesec.com/)
// See the file 'doc/LICENSE' for the license information

angular.module('faradayApp')
    .controller('workspaceProgressCtrl',
        ['$scope', '$routeParams', 'workspacesFact', 'dashboardSrv',
        function($scope, $routeParams, workspacesFact, dashboardSrv) {

            $scope.workspace;
            $scope.wsDuration;
            $scope.wsEnd;
            $scope.wsStart;
            $scope.wsProgress;

            init = function() {
                if($routeParams.wsId != undefined) {
                    $scope.workspace = $routeParams.wsId;

                    workspacesFact.getDuration($scope.workspace)
                        .then(function(duration) {
                            $scope.wsDuration = duration;
                            $scope.wsProgress = $scope.calculateProgress($scope.wsDuration);
                            $scope.wsStart = $scope.wsDuration.start;
                            $scope.wsEnd = $scope.wsDuration.end;
                        });
                }
            };

            $scope.calculateProgress = function(duration) {
                var partial = 0,
                progress = 0,
                today = new Date(),
                total = 0;

                if(duration.start == "" || duration.end == "") {
                    progress = null;
                } else {
                    today = today.getTime();
                    partial = today - duration.start;
                    total = duration.end - duration.start;

                    if(today > duration.end) {
                        progress = 100;
                    } else if(duration.start < today && today <= duration.end && total > 0) {
                        progress = Math.round(partial * 100 / total);
                    }
                }

                return progress;
            };

            dashboardSrv.registerCallback(init);

            init();
    }]);