X-Git-Url: https://gerrit.onap.org/r/gitweb?p=aai%2Fsparky-fe.git;a=blobdiff_plain;f=src%2Fgeneric-components%2FfilterBar%2FFilterBarUtils.js;fp=src%2Fgeneric-components%2FfilterBar%2FFilterBarUtils.js;h=0000000000000000000000000000000000000000;hp=101a66b41da0640fa9c841355f154a4f3dd5082e;hb=bca1bdc7d52b01ede5c0e85f06cd6c64e5aaab57;hpb=d4fd54113808e9efa637719719b2831e0597996e diff --git a/src/generic-components/filterBar/FilterBarUtils.js b/src/generic-components/filterBar/FilterBarUtils.js deleted file mode 100644 index 101a66b..0000000 --- a/src/generic-components/filterBar/FilterBarUtils.js +++ /dev/null @@ -1,350 +0,0 @@ -/* - * ============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 isEmpty from 'lodash/isEmpty'; -import moment from 'moment-timezone'; -import { - POST, - POST_HEADER -} from 'app/networking/NetworkConstants.js'; -import { - UNIFIED_FILTERS_URL, - DISCOVER_FILTERS_ERROR_MSG, - DATE_TIME_ZONE, - FILTER_ATTRIBUTE_TO, - FILTER_ATTRIBUTE_FROM, - FILTER_ATTRIBUTE_CODE, - FILTER_ATTRIBUTE_VALUES, - FILTER_ATTRIBUTE_CONTROLS, - FILTER_ATTRIBUTE_DEFAULT_VALUE, - FILTER_TYPE_ENUM, - filterBarActionTypes -} from 'generic-components/filterBar/FilterBarConstants.js'; -import { - MESSAGE_LEVEL_WARNING -} from 'utils/GlobalConstants.js'; -import { - getSetGlobalMessageEvent -} from 'app/globalInlineMessageBar/GlobalInlineMessageBarActions.js'; - -export function buildFilterValueMap(filterValueString) { - let filterValueObj = {}; - let filters = filterValueString.split(','); - - for (let filterIndex in filters) { - let filterStringParts = filters[filterIndex].split('='); - - filterValueObj[filterStringParts[0]] = filterStringParts[1]; - } - - return filterValueObj; -} - -export function buildFilterValueMapFromObj(filterValues) { - let filterValueObj = {}; - - for (let filterIndex in filterValues) { - filterValueObj[filterValues[filterIndex].filterId] = filterValues[filterIndex].filterValue; - } - - return filterValueObj; -} - -export function getFilterListQueryString(filterValueList) { - let filterQueryList = []; - - for (let filter in filterValueList) { - if (filterValueList[filter]) { - filterQueryList.push( - { - 'filterId': filter, - 'filterValue': filterValueList[filter] - } - ); - } - } - - return filterQueryList; -} - -function getFilterSearchURL() { - return UNIFIED_FILTERS_URL.replace('@@IP-ADDRESS@@', document.location.hostname); -} - -function getFiltersQueryObject(viewName) { - return { - 'viewName': viewName - }; -} - -function getFiltersEvent(actionType, filterList) { - return { - type: actionType, - data: filterList - }; -} - -export function getUnifiedFilters(viewName, actionType) { - return dispatch => { - return fetch(getFilterSearchURL(), { - credentials: 'same-origin', - method: POST, - headers: POST_HEADER, - body: JSON.stringify(getFiltersQueryObject(viewName)) - }).then( - (response) => response.json() - ).then( - (responseJson) => { - dispatch( - getFiltersEvent(actionType, responseJson.filters) - ); - } - ).catch( - () => { - dispatch(getSetGlobalMessageEvent(DISCOVER_FILTERS_ERROR_MSG, MESSAGE_LEVEL_WARNING)); - } - ); - }; -} - -function extractConvertedDateValues(dateValues) { - let convertedValues = {}; - if (dateValues.from) { - let startMoment = moment(dateValues.from); - convertedValues.startDate = startMoment.toDate(); - convertedValues.time_zone = startMoment.format(DATE_TIME_ZONE); - } - - if (dateValues.to) { - let endMoment = moment(dateValues.to); - convertedValues.endDate = endMoment.toDate(); - convertedValues.time_zone = endMoment.format(DATE_TIME_ZONE); - } - - convertedValues.code = dateValues.code; - - return convertedValues; -} - -function convertFilterValues(filterValues) { - let convertedFilterValues = {}; - - for (let filterId in filterValues) { - if (filterValues.hasOwnProperty(filterId) && - !isEmpty(filterValues[filterId]) && !isEmpty(filterValues[filterId].controls)) { - let controls = filterValues[filterId].controls; - let firstControlKey = Object.keys(controls)[0]; - if (controls[firstControlKey][FILTER_ATTRIBUTE_VALUES][FILTER_ATTRIBUTE_FROM] || - controls[firstControlKey][FILTER_ATTRIBUTE_VALUES][FILTER_ATTRIBUTE_TO]) { - // TODO should check against filter type (ex: dropdown or date) - // rather than assuming value attributes (ex: 'to' or 'from') - convertedFilterValues[filterId] = - extractConvertedDateValues(controls[firstControlKey][FILTER_ATTRIBUTE_VALUES]); - } else { - let codeValue = controls[firstControlKey][FILTER_ATTRIBUTE_VALUES][FILTER_ATTRIBUTE_CODE]; - convertedFilterValues[filterId] = codeValue; - } - } - } - - return convertedFilterValues; -} - -function combineMissingFilters(filterValues, allFilters) { - let allFilterIds = Object.keys(allFilters); - - for (let id in allFilterIds) { - if (!filterValues.hasOwnProperty(allFilterIds[id])) { - filterValues[allFilterIds[id]] = ''; - } - } - - return filterValues; -} - -function getFilterSelectionEvent(selectedValuesMap, convertedValues) { - return { - type: filterBarActionTypes.NEW_SELECTIONS, - data: { - selectedValuesMap: convertedValues, - unifiedValues: selectedValuesMap - } - }; -} - -export function processFilterSelection(filterValues, allFilters) { - let convertedFilterValues = convertFilterValues(filterValues); - let combinedFilterValues = combineMissingFilters(convertedFilterValues, allFilters); - - // dispatch NEW_SELECTION event type with converted values as the data - return getFilterSelectionEvent(filterValues, combinedFilterValues); -} - -export function setNonConvertedFilterValues(nonConvertedValues) { - return { - type: filterBarActionTypes.SET_NON_CONVERTED_VALUES, - data: nonConvertedValues - }; -} - -function convertedFilterValuesEvent(nonConvertedValues, convertedValues) { - return { - type: filterBarActionTypes.SET_CONVERTED_VALUES, - data: { - nonConvertedValues: nonConvertedValues, - convertedValues: convertedValues - } - }; -} - -function mapValuesToOption(filterOptions, nonConvertedValue) { - let mappedValues = {}; - - // loop over options to find match for value - for (let i in filterOptions) { - if (filterOptions[i].code === nonConvertedValue) { - // found the matching - mappedValues = filterOptions[i]; - break; - } - } - - return mappedValues; -} - -function mapValuesToDateOption(nonConvertedValue) { - let mappedValues = {}; - - if (nonConvertedValue.startDate) { - mappedValues.from = new Date(nonConvertedValue.startDate); - } else { - mappedValues.from = null; - } - - if (nonConvertedValue.endDate) { - mappedValues.to = new Date(nonConvertedValue.endDate); - } else { - mappedValues.to = null; - } - - mappedValues.code = nonConvertedValue.code; - - return mappedValues; -} - -function mapValuesToFilter(nonConvertedValues, allFilters, currentlySetFilterValues) { - let convertedValues = {}; - - for (let nonConvertedId in nonConvertedValues) { - if (nonConvertedValues[nonConvertedId] !== '') { - let matchingFilterObj = allFilters[nonConvertedId]; - let filterControlId = Object.keys(matchingFilterObj.controls)[0]; - let mappedValue = {}; - - if (matchingFilterObj[FILTER_ATTRIBUTE_CONTROLS][filterControlId].type === FILTER_TYPE_ENUM.DATE) { - mappedValue = mapValuesToDateOption(nonConvertedValues[nonConvertedId]); - } else { - mappedValue = mapValuesToOption(matchingFilterObj[FILTER_ATTRIBUTE_CONTROLS][filterControlId].options, - nonConvertedValues[nonConvertedId]); - } - - let values = {}; - values[FILTER_ATTRIBUTE_VALUES] = mappedValue; - let filterControlers = {}; - filterControlers[filterControlId] = values; - let filter = {}; - filter[FILTER_ATTRIBUTE_CONTROLS] = filterControlers; - convertedValues[nonConvertedId] = filter; - } else if (!isEmpty(currentlySetFilterValues[nonConvertedId])) { - // currently a value is set for this filter, need to ensure we map this filter - // to an empty value so that it is cleared/reset - let matchingFilterObj = allFilters[nonConvertedId]; - let filterControlId = Object.keys(matchingFilterObj.controls)[0]; - let mappedValue = {}; - let values = {}; - values[FILTER_ATTRIBUTE_VALUES] = mappedValue; - let filterControlers = {}; - filterControlers[filterControlId] = values; - let filter = {}; - filter[FILTER_ATTRIBUTE_CONTROLS] = filterControlers; - convertedValues[nonConvertedId] = filter; - } - } - - return convertedValues; -} - -export function convertNonConvertedValues(nonConvertedValues, allFilters, currentlySetFilterValues) { - let convertedValues = mapValuesToFilter(nonConvertedValues, allFilters, currentlySetFilterValues); - return convertedFilterValuesEvent(nonConvertedValues, convertedValues); -} - -export function clearFilters() { - return { - type: filterBarActionTypes.CLEAR_FILTERS - }; -} - -function getSetUnifiedFilterValuesEvent(unifiedValues) { - return { - type: filterBarActionTypes.SET_UNIFIED_VALUES, - data: unifiedValues - }; -} - -function getFilterDefault(filters, filterId) { - let filterControlId = Object.keys(filters[filterId][FILTER_ATTRIBUTE_CONTROLS])[0]; - let defaultValue = filters[filterId][FILTER_ATTRIBUTE_CONTROLS][filterControlId][FILTER_ATTRIBUTE_DEFAULT_VALUE]; - if (!defaultValue) { - defaultValue = {}; - } - return defaultValue; -} - -export function setFilterSelectionsToDefaults(filters, filterValues) { - let defaultFilterMap = {}; - - for (let filterId in filters) { - let filterDefaultValue = getFilterDefault(filters, filterId); - if (!isEmpty(filterDefaultValue) || (filterValues && filterValues[filterId])) { - let filterControlId = Object.keys(filters[filterId][FILTER_ATTRIBUTE_CONTROLS])[0]; - let controller = {}; - controller.values = filterDefaultValue; - let controllers = {}; - controllers[filterControlId] = controller; - let controls = {}; - controls.controls = controllers; - defaultFilterMap[filterId] = controls; - } - } - - if (isEmpty(defaultFilterMap)) { - // there are no default values, so need to ensure all filters get cleared, - // but just incase this 'clearing' - let combinedValues = combineMissingFilters(defaultFilterMap, filters); - return setNonConvertedFilterValues(combinedValues); - } else { - // jsut set the Unified Filter Value which will be sent down to the filter (filter - // will set itself to the default value and then send notification back up of the selection - return getSetUnifiedFilterValuesEvent(defaultFilterMap); - } -}