/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
import {
FormField,
Input,
SpaceBetween,
Select,
Container,
Header,
Button, Multiselect
} from "@awsui/components-react";
import React from "react";
const SchemaAttributeConditionsEdit = ({editingSchemaConditionsTemp, handleUserInputEditSchemaConditions, schemaAttributes, editDisabled}) => {
//Selection options.
const outcomeValues = [{label: 'Required', value: 'required'}, {label: 'Not required', value: 'not_required'}, {label: 'Hidden', value: 'hidden'}, {label: 'Not hidden', value: 'not_hidden'}];
const comparatorOperators = [{label: '=', value: '='}, {label: '!=', value: '!='}, {label: '!empty', value: '!empty'}, {label: 'empty', value: 'empty'}];
//Data access keys.
const trueOutcomeKey = 'true';
const falseOutcomeKey = 'false';
const queriesKey = 'conditions.queries';
const queriesAttributeKey = 'attribute';
const queriesComparatorKey = 'comparator';
const queriesValueKey = 'value';
const outcomesKey = 'conditions.outcomes';
//UI Messages.
const messages = {
conditionsContainerHeader: 'If this...',
outcomesContainerHeader: 'then...',
attributeFieldNameLabel: 'Attribute',
valueFieldNameLabel: 'Attribute Value',
comparatorFieldNameLabel: 'Matching Operator',
selectOutcomePlaceholder: 'Select outcome.',
addButtonLabel: 'Add',
deleteButtonLabel: 'Delete',
elseFieldNameLabel: 'Attribute will be',
thenFieldNameLabel: 'Attribute will be'
}
let conditions = [];
let outcomes = [];
function getSelectedOutcomeOptions(outcome){
if (editingSchemaConditionsTemp?.outcomes && editingSchemaConditionsTemp.outcomes[outcome]){
return editingSchemaConditionsTemp.outcomes[outcome].map((item) => {
return {label: item, value: item}
});
} else {
return [];
}
}
function getPlaceHolder(outcome){
if (editingSchemaConditionsTemp?.outcomes && editingSchemaConditionsTemp.outcomes[outcome] && editingSchemaConditionsTemp.outcomes[outcome].length > 0){
return editingSchemaConditionsTemp.outcomes[outcome].join(', ') + ' selected';
} else {
return messages.selectOutcomePlaceholder;
}
}
function displayConditions() {
if (editingSchemaConditionsTemp?.queries && editingSchemaConditionsTemp.queries.length > 0){
return
{outcomes}
} else {
return undefined;
}
}
if (editingSchemaConditionsTemp.queries) {
conditions = editingSchemaConditionsTemp.queries.map((query, index) => {
return
}
>
{'Condition ' + (index + 1)}
}>
{query.comparator !== '!empty' && query.comparator !== 'empty' ?
handleUserInputEditSchemaConditions(queriesKey + '.' + index + '.' + queriesValueKey, event.detail.value)}
value={query.value ? query.value : ''}
disabled={editDisabled}
/>
:
undefined
}
})
outcomes.push(
}
>
Then...
}>
handleUserInputEditSchemaConditions(outcomesKey + '.' + trueOutcomeKey, event.detail.selectedOptions ? event.detail.selectedOptions.map(item => {
return item.value
}) : [])}
options={outcomeValues}
selectedAriaLabel={'selected'}
disabled={editDisabled}
placeholder={getPlaceHolder(trueOutcomeKey)}
/>
);
outcomes.push(
}
>
Else...
}>
handleUserInputEditSchemaConditions(outcomesKey + '.' + falseOutcomeKey, event.detail.selectedOptions ? event.detail.selectedOptions.map(item => {
return item.value
}) : [])}
options={outcomeValues}
selectedAriaLabel={'selected'}
disabled={editDisabled}
placeholder={getPlaceHolder(falseOutcomeKey)}
/>
);
}
if (editingSchemaConditionsTemp) {
return (
Conditions and Outcomes
}>
}
>
{messages.conditionsContainerHeader}
}
>
{conditions}
{displayConditions()
}
);
} else {
return null
}
};
export default SchemaAttributeConditionsEdit;