[UI] Support UI partial control
[validation.git] / ui / src / main / webapp / app / BluvalUI / GetLastRun / GetLastRunController.js
diff --git a/ui/src/main/webapp/app/BluvalUI/GetLastRun/GetLastRunController.js b/ui/src/main/webapp/app/BluvalUI/GetLastRun/GetLastRunController.js
new file mode 100644 (file)
index 0000000..65f727e
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var app = angular.module('GetLastRun');
+app.controller('GetLastRunController',
+
+function($scope, restAPISvc, $window, appContext) {
+    initialize();
+
+    function initialize() {
+        $scope.loadingLabs = true;
+        $scope.loadingBlueprints = false;
+        $scope.loadingVersions = false;
+        restAPISvc.getRestAPI("/api/v1/results/getlabs/", function(data) {
+            $scope.labs = data;
+            $scope.loadingLabs = false;
+        });
+    }
+
+    $scope.selectedLabChange = function() {
+        $scope.loadingLabs = false;
+        $scope.loadingBlueprints = true;
+        $scope.loadingVersions = false;
+        $scope.blueprints = [];
+        $scope.versions = [];
+        $scope.layers = [];
+        $scope.optionals = [];
+        $scope.outcomes = [];
+        $scope.selectedBlueprint = {};
+        $scope.selectedVersion = {};
+        $scope.selectedLayer = {};
+        $scope.selectedOptional = {};
+        $scope.selectedOutcome = {};
+        restAPISvc.getRestAPI("/api/v1/results/getblueprintnamesoflab/"
+                + $scope.selectedLab, function(data) {
+            $scope.blueprints = data;
+            $scope.loadingBlueprints = false;
+        });
+    }
+
+    $scope.selectedBlueprintChange = function() {
+        if (!$scope.selectedLab) {
+            return;
+        }
+        $scope.loadingLabs = false;
+        $scope.loadingBlueprints = false;
+        $scope.loadingVersions = true;
+        $scope.versions = [];
+        $scope.layers = [];
+        $scope.optionals = [];
+        $scope.outcomes = [];
+        $scope.selectedVersion = {};
+        $scope.selectedLayer = {};
+        $scope.selectedOptional = {};
+        $scope.selectedOutcome = {};
+        restAPISvc.getRestAPI("/api/v1/results/getblueprintversions/"
+                + $scope.selectedBlueprint + "/" + $scope.selectedLab,
+                function(data) {
+                    $scope.versions = data;
+                    $scope.loadingVersions = false;
+                });
+    }
+
+    $scope.selectedVersionChange = function() {
+        $scope.layers = [];
+        $scope.optionals = [];
+        $scope.outcomes = [];
+        $scope.selectedLayer = {};
+        $scope.selectedOptional = {};
+        $scope.selectedOutcome = {};
+        $scope.loadingLabs = false;
+        $scope.loadingBlueprints = false;
+        $scope.loadingVersions = false;
+        $scope.loadingResults = false;
+        $scope.layers = [ 'all', 'hardware', 'os', 'k8s', 'openstack' ];
+    }
+
+    $scope.selectedLayerChange = function() {
+        $scope.optionals = [];
+        $scope.outcomes = [];
+        $scope.selectedOptional = {};
+        $scope.selectedOutcome = {};
+        $scope.loadingLabs = false;
+        $scope.loadingBlueprints = false;
+        $scope.loadingVersions = false;
+        $scope.loadingResults = false;
+        $scope.optionals = [ 'true', 'false' ];
+    }
+
+    $scope.selectedOptionalChange = function() {
+        $scope.outcomes = [];
+        $scope.selectedOutcome = {};
+        $scope.loadingLabs = false;
+        $scope.loadingBlueprints = false;
+        $scope.loadingVersions = false;
+        $scope.loadingResults = false;
+        $scope.outcomes = [ 'SUCCESS', 'FAILURE' ];
+    }
+
+    $scope.selectedOutcomeChange = function() {
+        $scope.loadingLabs = false;
+        $scope.loadingBlueprints = false;
+        $scope.loadingVersions = false;
+        $scope.loadingResults = false;
+    }
+
+    $scope.get = function() {
+        if (!$scope.selectedLab || !$scope.selectedBlueprint
+                || !$scope.selectedVersion || !$scope.selectedLayer
+                || !$scope.selectedOptional || !$scope.selectedOutcome) {
+            confirm("You must specify all data fields");
+            return;
+        }
+        var outcome = "";
+        if ($scope.selectedOutcome === 'SUCCESS') {
+            outcome = true;
+        } else {
+            outcome = false;
+        }
+        var allLayers = "";
+        var layer = "";
+        if ($scope.selectedLayer === 'all') {
+            allLayers = "true";
+        } else {
+            layer = $scope.selectedLayer;
+        }
+        $window.location.href = appContext
+                + "/validationresults#?blueprintName="
+                + $scope.selectedBlueprint + "&" + "version="
+                + $scope.selectedVersion + "&" + "lab=" + $scope.selectedLab
+                + "&" + "allLayers=" + allLayers + "&" + "layer=" + layer + "&"
+                + "optional=" + $scope.selectedOptional + "&" + "outcome="
+                + outcome;
+    }
+
+});