Skip to content

Commit

Permalink
more fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Gilad Lekner authored and Gilad Lekner committed Apr 7, 2020
1 parent d7d4132 commit d011ebf
Show file tree
Hide file tree
Showing 11 changed files with 235 additions and 260 deletions.
Expand Up @@ -18,7 +18,7 @@ import { ModalFooter } from '../../modal/modal-footer';
import { AFFINITY_MODAL_TITLE, AFFINITY_CREATE, AFFINITY_EDITING } from '../shared/consts';
import { AffinityTable } from './components/affinity-table/affinity-table';
import { AffinityRow } from './components/affinity-table/affinity-row';
import { AffinityEdit } from './components/affinity-edit';
import { AffinityEdit } from './components/affinity-edit/affinity-edit';
import { AffinityRowData } from './types';
import {
getRowsDataFromAffinity,
Expand Down Expand Up @@ -157,7 +157,6 @@ export const AffinityModal = withHandlePromise<AffinityModalProps>(
<AffinityEdit
nodes={nodes}
affinity={focusedAffinity}
affinities={affinities}
onAffinitySubmit={isCreating ? onAffinityAdd : onAffinityChange}
onCancel={onCancel}
/>
Expand Down
@@ -0,0 +1,8 @@
.kv-affinity-edit__radio-container {
display: flex;
flex-direction: column;

.kv-affinity-edit__radio {
margin-left: var(--pf-global--spacer--sm);
}
}
Expand Up @@ -4,57 +4,49 @@ import { FirehoseResult } from '@console/internal/components/utils';
import { K8sResourceKind } from '@console/internal/module/k8s';
import { ModalBody } from '@console/internal/components/factory';
import { ValidationErrorType } from '@console/shared';
import { isLoaded } from '../../../../../utils';
import { ModalFooter } from '../../../modal/modal-footer';
import { isLoaded } from '../../../../../../utils';
import { ModalFooter } from '../../../../modal/modal-footer';
import {
AFFINITY_TYPE_LABLES,
AFFINITY_CONDITIONS,
AFFINITY_CONDITION_LABELS,
} from '../../shared/consts';
import { FormRow } from '../../../../form/form-row';
import {
isWeightValid,
isRequiredConditionDisabled,
isTermsInvalid,
getTopologyKeyValidation,
} from '../validations';
import { useIDEntities } from '../../../../../hooks/use-id-entities';
import { NodeChecker } from '../../shared/NodeChecker/node-checker';
import { useNodeQualifier } from '../../shared/hooks';
import { AffinityLabel, AffinityRowData } from '../types';
import { AffinityExpressionList } from './affinity-expression-list/affinity-expression-list';
} from '../../../shared/consts';
import { FormRow } from '../../../../../form/form-row';
import { isWeightValid, isTermsInvalid, getTopologyKeyValidation } from '../../validations';
import { useIDEntities } from '../../../../../../hooks/use-id-entities';
import { NodeChecker } from '../../../shared/NodeChecker/node-checker';
import { useNodeQualifier } from '../../../shared/hooks';
import { AffinityLabel, AffinityRowData } from '../../types';
import { AffinityExpressionList } from '../affinity-expression-list/affinity-expression-list';
import './affinity-edit.scss';

export const AffinityEdit: React.FC<AffinityEditProps> = ({
nodes,
affinity,
affinities,
isDisabled,
onAffinitySubmit,
onCancel,
}) => {
const [focusedAffinity, setFocusedAffinity] = React.useState(affinity);

const expressionsWithID = affinity?.expressions?.map((exp, i) => ({ ...exp, id: i }));
const [
affinityExpressions,
,
onExpressionAdd,
onExpressionChange,
onExpressionDelete,
] = useIDEntities<AffinityLabel>(expressionsWithID);
] = useIDEntities<AffinityLabel>(affinity?.expressions);

const onLabelExpressionAdd = () =>
onExpressionAdd({ id: null, key: '', values: [], operator: 'In' } as AffinityLabel);

const fieldsWithID = affinity?.fields?.map((field, i) => ({ ...field, id: i }));
const [affinityFields, , onFieldAdd, onFieldChange, onFieldDelete] = useIDEntities<AffinityLabel>(
fieldsWithID,
affinity?.fields,
);

const onLabelFieldAdd = () =>
onFieldAdd({ id: null, key: '', values: [], operator: 'In' } as AffinityLabel);

const isRequiredDisabled = isRequiredConditionDisabled(focusedAffinity, affinities);
const isNodeAffinity = focusedAffinity.type === 'nodeAffinity';
const {
isTopologyDisabled,
Expand Down Expand Up @@ -131,14 +123,8 @@ export const AffinityEdit: React.FC<AffinityEditProps> = ({
<FormSelectOption
key={AFFINITY_CONDITIONS.required}
value={AFFINITY_CONDITIONS.required}
label={
!isRequiredDisabled
? AFFINITY_CONDITION_LABELS[AFFINITY_CONDITIONS.required]
: `${
AFFINITY_CONDITION_LABELS[AFFINITY_CONDITIONS.required]
} - Affinity already in use`
}
isDisabled={isDisabled || isRequiredDisabled}
label={AFFINITY_CONDITION_LABELS[AFFINITY_CONDITIONS.required]}
isDisabled={isDisabled}
/>
</FormSelect>
</FormRow>
Expand Down Expand Up @@ -183,7 +169,7 @@ export const AffinityEdit: React.FC<AffinityEditProps> = ({
)}
<Divider />
<FormRow
title="Expressions"
title={isNodeAffinity ? 'Node Labels' : 'Workload Labels'}
fieldId={'expressions'}
validationType={isExpressionsInvalid && ValidationErrorType.Error}
validationMessage={isExpressionsInvalid && 'Missing fields'}
Expand Down Expand Up @@ -240,7 +226,6 @@ export const AffinityEdit: React.FC<AffinityEditProps> = ({
type AffinityEditProps = {
nodes?: FirehoseResult<K8sResourceKind[]>;
affinity: AffinityRowData;
affinities: AffinityRowData[];
isDisabled?: boolean;
onAffinitySubmit: (affinity: AffinityRowData) => void;
onCancel: (affinity: AffinityRowData) => void;
Expand Down
Expand Up @@ -24,10 +24,10 @@ export const AffinityExpressionList = ({
<GridItem span={4}>
<Text component={TextVariants.h6}>{LABEL_KEY}</Text>
</GridItem>
<GridItem span={3}>
<GridItem span={2}>
<Text component={TextVariants.h6}>Operator</Text>
</GridItem>
<GridItem span={5}>
<GridItem span={6}>
<Text component={TextVariants.h6}>Values</Text>
</GridItem>
{expressions.map((expression) => (
Expand Down

0 comments on commit d011ebf

Please sign in to comment.