Adding filter bar
[aai/sparky-fe.git] / src / utils / Routes.js
index 9d15177..5a5e089 100644 (file)
@@ -1,36 +1,94 @@
-/*
- * ============LICENSE_START=======================================================
- * org.onap.aai
- * ================================================================================
- * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017 Amdocs
- * ================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
+import {encrypt } from './Crypto.js';
+import { decrypt } from '../utils/Crypto.js';
+
+
 export function changeUrlAddress(pathObj, historyObj) {
-  let toGo = '/' +
-    pathObj.route +
-    '/' +
-    pathObj.hashId;
+  let toGo = '/' + pathObj.route;
+  // left global search to act the same as before for our 2 static views for now
+  // until we decide to change those 2 views too to act like extensible views.
+  if (pathObj.route === 'schema' || pathObj.route === 'vnfSearch') {
+    if (pathObj.filterValues && pathObj.filterValues.length > 0) {
+      let filterList = [];
+      for (let index in pathObj.filterValues) {
+        if (pathObj.filterValues[index].filterValue !== undefined) {
+          filterList.push(pathObj.filterValues[index].filterId +
+            '=' +
+            pathObj.filterValues[index].filterValue);
+        } else {
+          filterList.push(pathObj.filterValues[index].filterId + '=');
+        }
+      }
+      toGo = toGo + '/' + filterList.toString();
+    } else {
+      toGo = toGo + '/' + pathObj.hashId;
+    }
+  } else {
+    toGo += '/' + encrypt(JSON.stringify(pathObj));
+  }
   historyObj.push(toGo, {lastRoute: pathObj.route});
 }
 
-export function buildRouteObj(routePath, routeHash) {
+export function buildRouteObjWithHash(routePath, routeHash) {
   return {
     route: routePath,
     hashId: routeHash
   };
 }
+
+
+export function decryptParamsForView(params) {
+  let jsonParam = {};
+
+  function isJson(str) {
+    try {
+      JSON.parse(str);
+    } catch (e) {
+      return false;
+    }
+    return true;
+  };
+
+  let stringParams;
+
+  try {
+    stringParams = decrypt(params);
+  } catch(e) {
+    //add inline message in next story
+    //happens when user changes the url.
+  }
+
+  if(!isJson(stringParams)) {
+    return jsonParam;
+  }
+
+  jsonParam = JSON.parse(stringParams);
+  return jsonParam;
+}
+
+export function buildRouteObjWithFilters(routePath, routeFiltersObj) {
+  let filterValues = [];
+  if (routeFiltersObj !== undefined) {
+    for (let id in routeFiltersObj) {
+      if (routeFiltersObj[id] !== undefined) {
+        filterValues.push(
+          {
+            'filterId': id,
+            'filterValue': routeFiltersObj[id]
+          }
+        );
+      } else {
+        filterValues.push(
+          {
+            'filterId': id,
+            'filterValue': ''
+          }
+        );
+      }
+    }
+  }
+
+  return {
+    route: routePath,
+    filterValues: filterValues
+  };
+}