From a7b4b96afee33a2ff458f906742d88cd306ed961 Mon Sep 17 00:00:00 2001 From: Shawn Severin Date: Thu, 7 Dec 2017 15:19:25 -0500 Subject: Adding filter bar Issue-ID: AAI-543 Change-Id: I18ec69f4585a9f01feafd009fcd30493a039b064 Signed-off-by: Shawn Severin --- src/utils/Crypto.js | 22 ++++++++ src/utils/DateTimeChartUtil.js | 33 ++++++++---- src/utils/Routes.js | 112 +++++++++++++++++++++++++++++++---------- 3 files changed, 129 insertions(+), 38 deletions(-) create mode 100644 src/utils/Crypto.js (limited to 'src/utils') diff --git a/src/utils/Crypto.js b/src/utils/Crypto.js new file mode 100644 index 0000000..c2b34a0 --- /dev/null +++ b/src/utils/Crypto.js @@ -0,0 +1,22 @@ +/** + * Created by salmaat on 7/13/2017. + */ +import CryptoJS from 'crypto-js'; + +var key = 'key2017'; + +function encrypt(text) { + var encrypted = CryptoJS.AES.encrypt(text, key); + return encrypted.toString().split('/').join('*'); +} + +function decrypt(text) { + var decrypted = CryptoJS.AES.decrypt(text.split('*').join('/'), key); + return decrypted.toString(CryptoJS.enc.Utf8); +} + + +module.exports = { + encrypt: encrypt, + decrypt: decrypt +}; diff --git a/src/utils/DateTimeChartUtil.js b/src/utils/DateTimeChartUtil.js index f0735e5..44224a3 100644 --- a/src/utils/DateTimeChartUtil.js +++ b/src/utils/DateTimeChartUtil.js @@ -1,25 +1,28 @@ /* - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ============LICENSE_START=================================================== + * SPARKY (AAI UI service) + * ============================================================================ + * Copyright © 2017 AT&T Intellectual Property. * Copyright © 2017 Amdocs - * ================================================================================ + * 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 + * 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========================================================= + * ============LICENSE_END===================================================== * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP and OpenECOMP are trademarks + * and service marks of AT&T Intellectual Property. */ + let moment = require('moment'); let d3Scale = require('d3-scale'); let d3Time = require('d3-time'); @@ -32,6 +35,14 @@ export function dateFormatLocalTimeZoneMMDDYYYY(time) { return moment(time).format('L'); }; +/** + * Converts specified time (ms since epoc) into a + * YYYY-MM-DD format for the local timezone + */ +export function dateFormatLocalTimeZoneYYYYMMDD(time) { + return moment(time).format('YYYY-MM-DD'); +}; + /** * Build a map of 'ticks' to be used on a graph axis based on the date range * identified by the specified JSON attribute (ticks will be on a daily basis) @@ -44,12 +55,12 @@ export function getTicks(data, attrKey) { if (!data || !data.length) { return []; } - + const domain = [new Date(data[0][attrKey]), new Date(data[data.length - 1][attrKey])]; const scale = d3Scale.scaleTime().domain(domain).range([0, 1]); const ticks = scale.ticks(d3Time.timeDay, 1); - + return ticks.map(entry => +entry); }; @@ -64,7 +75,7 @@ export function getTicksData(data, ticks, attrKey) { if (!data || !data.length) { return []; } - + const dataMap = new Map(data.map((i) => [i[attrKey], i])); ticks.forEach(function (item) { if (!dataMap.has(item)) { diff --git a/src/utils/Routes.js b/src/utils/Routes.js index 9d15177..5a5e089 100644 --- a/src/utils/Routes.js +++ b/src/utils/Routes.js @@ -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 + }; +} -- cgit 1.2.3-korg