2 * Copyright © 2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 import { createSelector } from 'reselect';
18 import isEmpty from 'lodash.isempty';
20 import { INPUTS } from 'features/version/inputOutput/inputOutputConstants';
22 export const getInputOutput = state => state.currentVersion.inputOutput;
23 export const getInputs = createSelector(getInputOutput, data => data.inputs);
24 export const getOutputs = createSelector(getInputOutput, data => data.outputs);
25 export const getInputOutputForComposition = state => ({
26 inputs: getInputs(state).map(item => ({
28 type: item.type.toLowerCase()
30 outputs: getOutputs(state).map(item => ({
32 type: item.type.toLowerCase()
35 export const getCurrent = createSelector(
37 inputOutput => inputOutput.current
40 export const getIsShowInputs = createSelector(
42 current => current === INPUTS
45 export const getSearch = createSelector(
47 inputOutput => inputOutput.search
50 export const getDataRows = createSelector(
51 [getInputOutput, getCurrent],
52 (inputOutput, current) => {
53 if (inputOutput.search) {
54 return inputOutput[current].filter(dataRow =>
57 .includes(inputOutput.search.toLowerCase())
61 return inputOutput[current];
65 export const getTypes = createSelector(
67 inputOutput => inputOutput.types
70 export const getError = createSelector(
71 [getInputOutput, getCurrent],
72 (inputOutput, current) => inputOutput.error[current]
75 export const getErrorsInputOutput = createSelector(
80 export const getInputErrors = createSelector(
85 inputs.alreadyExists.length ||
86 inputs.invalidCharacters.length ||
87 inputs.emptyName.length
91 export const getOutputErrors = createSelector(
96 outputs.alreadyExists.length ||
97 outputs.invalidCharacters.length ||
98 outputs.emptyName.length
102 export const getIOErrors = createSelector(
105 (inputsErrors, outputsErrors) => inputsErrors || outputsErrors