/*!
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
*
* 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 React from 'react';
import i18n from 'nfvo-utils/i18n/i18n.js';
import Validator from 'nfvo-utils/Validator.js';
import Input from 'nfvo-components/input/validation/Input.jsx';
import InputOptions from 'nfvo-components/input/validation/InputOptions.jsx';
import Form from 'nfvo-components/input/validation/Form.jsx';
import GridSection from 'nfvo-components/grid/GridSection.jsx';
import GridItem from 'nfvo-components/grid/GridItem.jsx';
import {optionsInputValues as EntitlementPoolsOptionsInputValues, thresholdUnitType, SP_ENTITLEMENT_POOL_FORM} from './EntitlementPoolsConstants.js';
import {other as optionInputOther} from 'nfvo-components/input/inputOptions/InputOptions.jsx';
const EntitlementPoolPropType = React.PropTypes.shape({
id: React.PropTypes.string,
name: React.PropTypes.string,
description: React.PropTypes.string,
manufacturerReferenceNumber: React.PropTypes.string,
operationalScope: React.PropTypes.shape({
choices: React.PropTypes.array,
other: React.PropTypes.string
}),
aggregationFunction: React.PropTypes.shape({
choice: React.PropTypes.string,
other: React.PropTypes.string
}),
increments: React.PropTypes.string,
time: React.PropTypes.shape({
choice: React.PropTypes.string,
other: React.PropTypes.string
}),
entitlementMetric: React.PropTypes.shape({
choice: React.PropTypes.string,
other: React.PropTypes.string
})
});
const EntitlementPoolsFormContent = ({data, genericFieldInfo, onDataChanged, validateName, validateChoiceWithOther, validateTimeOtherValue, thresholdValueValidation}) => {
let {
name, description, manufacturerReferenceNumber, operationalScope , aggregationFunction, thresholdUnits, thresholdValue,
increments, time, entitlementMetric} = data;
return (
onDataChanged({name}, SP_ENTITLEMENT_POOL_FORM, {name: validateName})}
isValid={genericFieldInfo.name.isValid}
isRequired={true}
errorText={genericFieldInfo.name.errorText}
label={i18n('Name')}
value={name}
data-test-id='create-ep-name'
type='text'/>
{}}
isMultiSelect={true}
isRequired={true}
onEnumChange={operationalScope => onDataChanged({operationalScope:{choices: operationalScope, other: ''}},
SP_ENTITLEMENT_POOL_FORM, {operationalScope: validateChoiceWithOther})}
onOtherChange={operationalScope => onDataChanged({operationalScope:{choices: [optionInputOther.OTHER],
other: operationalScope}}, SP_ENTITLEMENT_POOL_FORM, {operationalScope: validateChoiceWithOther})}
label={i18n('Operational Scope')}
data-test-id='create-ep-operational-scope'
type='select'
multiSelectedEnum={operationalScope && operationalScope.choices}
otherValue={operationalScope && operationalScope.other}
values={EntitlementPoolsOptionsInputValues.OPERATIONAL_SCOPE}
isValid={genericFieldInfo.operationalScope.isValid}
errorText={genericFieldInfo.operationalScope.errorText} />
onDataChanged({description}, SP_ENTITLEMENT_POOL_FORM)}
isValid={genericFieldInfo.description.isValid}
errorText={genericFieldInfo.description.errorText}
label={i18n('Description')}
value={description}
isRequired={true}
data-test-id='create-ep-description'
type='textarea'/>
{
// setting the unit to the correct value
const selectedIndex = e.target.selectedIndex;
const val = e.target.options[selectedIndex].value;
onDataChanged({thresholdUnits: val}, SP_ENTITLEMENT_POOL_FORM);
// TODO make sure that the value is valid too
onDataChanged({thresholdValue: thresholdValue}, SP_ENTITLEMENT_POOL_FORM,{thresholdValue : thresholdValueValidation});}
}
value={thresholdUnits}
label={i18n('Threshold Units')}
data-test-id='create-ep-threshold-units'
isValid={genericFieldInfo.thresholdUnits.isValid}
errorText={genericFieldInfo.thresholdUnits.errorText}
groupClassName='bootstrap-input-options'
className='input-options-select'
type='select' >
{EntitlementPoolsOptionsInputValues.THRESHOLD_UNITS.map(mtype =>
)}
onDataChanged({thresholdValue}, SP_ENTITLEMENT_POOL_FORM,
{thresholdValue : thresholdValueValidation})}
label={i18n('Threshold Value')}
isValid={genericFieldInfo.thresholdValue.isValid}
errorText={genericFieldInfo.thresholdValue.errorText}
data-test-id='create-ep-threshold-value'
value={thresholdValue}
isRequired={true}
type='text'/>