summaryrefslogtreecommitdiffstats
path: root/sdc-workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputSelectors.js
diff options
context:
space:
mode:
Diffstat (limited to 'sdc-workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputSelectors.js')
-rw-r--r--sdc-workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputSelectors.js106
1 files changed, 106 insertions, 0 deletions
diff --git a/sdc-workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputSelectors.js b/sdc-workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputSelectors.js
new file mode 100644
index 00000000..3a6c9e8f
--- /dev/null
+++ b/sdc-workflow-designer-ui/src/main/frontend/src/features/version/inputOutput/inputOutputSelectors.js
@@ -0,0 +1,106 @@
+/*
+* Copyright © 2018 European Support Limited
+*
+* 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 isEmpty from 'lodash.isempty';
+
+import { INPUTS } from 'features/version/inputOutput/inputOutputConstants';
+
+export const getInputOutput = state => state.currentVersion.inputOutput;
+export const getInputs = createSelector(getInputOutput, data => data.inputs);
+export const getOutputs = createSelector(getInputOutput, data => data.outputs);
+export const getInputOutputForComposition = state => ({
+ inputs: getInputs(state).map(item => ({
+ ...item,
+ type: item.type.toLowerCase()
+ })),
+ outputs: getOutputs(state).map(item => ({
+ ...item,
+ type: item.type.toLowerCase()
+ }))
+});
+export const getCurrent = createSelector(
+ getInputOutput,
+ inputOutput => inputOutput.current
+);
+
+export const getIsShowInputs = createSelector(
+ getCurrent,
+ current => current === INPUTS
+);
+
+export const getSearch = createSelector(
+ getInputOutput,
+ inputOutput => inputOutput.search
+);
+
+export const getDataRows = createSelector(
+ [getInputOutput, getCurrent],
+ (inputOutput, current) => {
+ if (inputOutput.search) {
+ return inputOutput[current].filter(dataRow =>
+ dataRow.name
+ .toLowerCase()
+ .includes(inputOutput.search.toLowerCase())
+ );
+ }
+
+ return inputOutput[current];
+ }
+);
+
+export const getTypes = createSelector(
+ getInputOutput,
+ inputOutput => inputOutput.types
+);
+
+export const getError = createSelector(
+ [getInputOutput, getCurrent],
+ (inputOutput, current) => inputOutput.error[current]
+);
+
+export const getErrorsInputOutput = createSelector(
+ getInputOutput,
+ ({ error }) => error
+);
+
+export const getInputErrors = createSelector(
+ getErrorsInputOutput,
+ ({ inputs }) =>
+ !isEmpty(inputs) &&
+ Boolean(
+ inputs.alreadyExists.length ||
+ inputs.invalidCharacters.length ||
+ inputs.emptyName.length
+ )
+);
+
+export const getOutputErrors = createSelector(
+ getErrorsInputOutput,
+ ({ outputs }) =>
+ !isEmpty(outputs) &&
+ Boolean(
+ outputs.alreadyExists.length ||
+ outputs.invalidCharacters.length ||
+ outputs.emptyName.length
+ )
+);
+
+export const getIOErrors = createSelector(
+ getInputErrors,
+ getOutputErrors,
+ (inputsErrors, outputsErrors) => inputsErrors || outputsErrors
+);