[UI] Support UI partial control
[validation.git] / ui / src / main / webapp / app / BluvalUI / ValidationResults / ValidationResults.Services.js
diff --git a/ui/src/main/webapp/app/BluvalUI/ValidationResults/ValidationResults.Services.js b/ui/src/main/webapp/app/BluvalUI/ValidationResults/ValidationResults.Services.js
new file mode 100644 (file)
index 0000000..bfda0b1
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * 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('ValidationResults');
+
+app.factory('generalValidationResultsSvc', [ function() {
+    var svc = [];
+    svc.getBlueprintLayers = function(wRobotNexusTestResults) {
+        var layers = [];
+        angular.forEach(wRobotNexusTestResults,
+                function(wRobotNexusTestResult) {
+                    if (wRobotNexusTestResult.blueprintLayer !== undefined) {
+                        layers.push(wRobotNexusTestResult.blueprintLayer);
+                    }
+                });
+        return layers;
+    };
+    svc.mapResult = function(validationNexusTestResult) {
+        if (!validationNexusTestResult.timestamp) {
+            return null;
+        }
+        if (!validationNexusTestResult.wRobotNexusTestResults) {
+            return null;
+        }
+        if (validationNexusTestResult.wRobotNexusTestResults.length === 0) {
+            return null;
+        }
+        var resultExistence = false;
+        angular.forEach(validationNexusTestResult.wRobotNexusTestResults,
+                function(result) {
+                    if (result.robotTestResults
+                            && result.robotTestResults.length > 0) {
+                        resultExistence = true;
+                    }
+                });
+        if (resultExistence) {
+            if (validationNexusTestResult.result === true) {
+                return 'SUCCESS';
+            }
+            return 'FAILURE'
+        }
+        return null;
+    };
+    svc.filterWithLayer = function(validationNexusTestResults, filterLayer) {
+        if (filterLayer === undefined || filterLayer === '') {
+            return validationNexusTestResults;
+        }
+        var filteredResults = [];
+        angular.forEach(validationNexusTestResults, function(
+                validationNexusTestResult) {
+            angular.forEach(validationNexusTestResult.wRobotNexusTestResults,
+                    function(wRobotNexusTestResult) {
+                        if (wRobotNexusTestResult.blueprintLayer.toLowerCase()
+                                .includes(filterLayer.toLowerCase())) {
+                            filteredResults.push(validationNexusTestResult);
+                        }
+                    });
+        });
+        return filteredResults;
+    }
+    svc.filterWithResult = function(validationNexusTestResults, filterResult) {
+        if (filterResult === undefined || filterResult === '') {
+            return validationNexusTestResults;
+        }
+        var filteredResults = [];
+        angular.forEach(validationNexusTestResults, function(
+                validationNexusTestResult) {
+            if (validationNexusTestResult.result === true
+                    && 'success'.includes(filterResult.toLowerCase())) {
+                filteredResults.push(validationNexusTestResult);
+            } else if (validationNexusTestResult.result === false
+                    && 'failure'.includes(filterResult.toLowerCase())) {
+                filteredResults.push(validationNexusTestResult);
+            }
+        });
+        return filteredResults;
+    }
+    svc.getLab = function(silo, silos) {
+        var lab = null;
+        angular.forEach(silos, function(siloData) {
+            if (silo === siloData.silo) {
+                lab = siloData.lab.lab;
+            }
+        });
+        return lab;
+    }
+    return svc;
+} ]);
\ No newline at end of file