blob: 9a9ebc3704875e00a68f4bf96d35803edf55edc9 [file] [log] [blame]
// 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 PropTypes from 'prop-types';
import React from 'react';
import Components from '../../components/react-components';
import AddOptionButtonContainer from './AddOptionButtonContainer';
import ConfigTable from './ConfigTable';
export default class ConfigTableScreen extends React.Component {
static propTypes = {
options: PropTypes.array.isRequired,
loading: PropTypes.bool.isRequired,
saving: PropTypes.bool.isRequired,
saveOption: PropTypes.func.isRequired,
deleteOption: PropTypes.func.isRequired,
editOption: PropTypes.func.isRequired,
cancelEdit: PropTypes.func.isRequired,
fetchAndEditConfig: PropTypes.func.isRequired
};
constructor(props) {
super(props);
this.props.fetchAndEditConfig(this.props.node);
}
saveOption = (option) => {
this.props.saveOption(this.props.node, option);
};
deleteOption = (option) => {
this.props.deleteOption(this.props.node, option);
};
editOption = (option) => {
this.props.editOption(option);
};
cancelEdit = () => {
this.props.cancelEdit();
};
render() {
if (this.props.loading) {
return (
<div className="view">
<Components.LoadLines />
</div>
);
}
return (
<>
<AddOptionButtonContainer node={this.props.node} />
<ConfigTable
saving={this.props.saving}
onDeleteOption={this.deleteOption}
onSaveOption={this.saveOption}
onEditOption={this.editOption}
onCancelEdit={this.cancelEdit}
options={this.props.options}/>
</>
);
}
}