65 lines
2.0 KiB
JavaScript
65 lines
2.0 KiB
JavaScript
/**
|
|
* Copyright 2017 Red Hat Inc.
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
import { createSelector } from 'reselect';
|
|
import { List } from 'immutable';
|
|
|
|
const topics = state => state.environmentConfiguration.topics;
|
|
const environmentGroups = state =>
|
|
state.environmentConfiguration.environmentGroups;
|
|
export const getEnvironments = state =>
|
|
state.environmentConfiguration.environments.sortBy(e =>
|
|
e.title.toLowerCase()
|
|
);
|
|
|
|
export const getEnvironment = (state, environmentFileName) =>
|
|
state.environmentConfiguration.environments.get(environmentFileName);
|
|
|
|
export const getEnabledEnvironments = createSelector(
|
|
getEnvironments,
|
|
environments => environments.filter(environment => environment.get('enabled'))
|
|
);
|
|
|
|
export const getEnvironmentConfigurationSummary = createSelector(
|
|
getEnabledEnvironments,
|
|
environments => {
|
|
const titlesList = environments.reduce(
|
|
(titlesList, environment) => titlesList.push(environment.get('title')),
|
|
List()
|
|
);
|
|
return titlesList.toArray().join(', ');
|
|
}
|
|
);
|
|
|
|
/**
|
|
* Returns Map of Topics with nested Environment Groups and Environments
|
|
*/
|
|
export const getTopicsTree = createSelector(
|
|
[topics, environmentGroups, getEnvironments],
|
|
(topics, environmentGroups, environments) =>
|
|
topics.map(topic =>
|
|
topic.update('environment_groups', envGroups =>
|
|
envGroups.map(envGroup =>
|
|
environmentGroups
|
|
.get(envGroup)
|
|
.update('environments', envs =>
|
|
environments.filter((p, k) => envs.includes(k))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
);
|