public/components/contentSourceEdit.react.js (101 lines of code) (raw):

import React from 'react'; import * as R from 'ramda'; import { Button, ButtonToolbar, Input, Alert, Col } from 'react-bootstrap'; import ContentSourceService from '../services/contentSourceService'; import {headerListToHeaderMap, HeadersForm} from "./headersForm"; export default class ContentSourceEdit extends React.Component { constructor(props) { super(props); this.state = { appName: this.props.contentSource.appName, description: this.props.contentSource.description, reindexEndpoint: this.props.contentSource.reindexEndpoint, authType: this.props.contentSource.authType, headers: Object.entries(this.props.contentSource.headers ?? {}).map(([key, value]) => ({ key, value })), supportsToFromParams: this.props.contentSource.contentSourceSettings.supportsToFromParams, supportsCancelReindex: this.props.contentSource.contentSourceSettings.supportsCancelReindex, alertStyle: 'success', alertMessage: '', alertVisibility: false }; this.exitEditMode = this.exitEditMode.bind(this); } handleAppNameChange(e) { this.setState({appName: e.target.value}); } handleDescriptionChange(e) { this.setState({description: e.target.value}); } handleReindexEndpointChange(e) { this.setState({reindexEndpoint: e.target.value}); } handleAuthTypeChange(e) { this.setState({authType: e.target.value}); } handleSupportsToFromParams(e) { this.setState({supportsToFromParams: e.target.checked}); } handleSupportsCancelReindex(e) { this.setState({supportsCancelReindex: e.target.checked}); } exitEditMode() { this.props.callbackParent(false); } handleSubmit(e) { e.preventDefault(); const appName = this.state.appName.trim(); const description = this.state.description.trim(); const reindexEndpoint = this.state.reindexEndpoint.trim(); const authType = this.state.authType.trim(); const supportsToFromParams = this.state.supportsToFromParams; const supportsCancelReindex = this.state.supportsCancelReindex; if (appName && description && reindexEndpoint && authType && !R.isNil(supportsToFromParams) && !R.isNil(supportsCancelReindex)) { this.handleFormSubmit(this.props.contentSource.id, this.props.contentSource.environment, {appName: appName, description: description, reindexEndpoint: reindexEndpoint, authType: authType, ...(this.state.headers ? { headers: headerListToHeaderMap(this.state.headers) } : {}), contentSourceSettings: { supportsToFromParams: supportsToFromParams, supportsCancelReindex: supportsCancelReindex }}); } else { this.setState({alertStyle: 'danger', alertMessage: 'Invalid form. Correct the fields and try again.', alertVisibility: true}); return; } } handleFormSubmit(id, environment, form) { ContentSourceService.updateContentSource(id, environment, form).then(response => { this.setState({alertVisibility: false}); this.exitEditMode(); }); } render () { return ( <div> { this.state.alertVisibility ? <Alert bsStyle={this.state.alertStyle}>{this.state.alertMessage}</Alert> : null } <form className="form-horizontal" onSubmit={this.handleSubmit.bind(this)}> <Input type="text" label="Application Name*" labelClassName="col-xs-2" wrapperClassName="col-xs-10" value={this.state.appName} onChange={this.handleAppNameChange.bind(this)} /> <Input type="text" label="Description*" labelClassName="col-xs-2" wrapperClassName="col-xs-10" value={this.state.description} onChange={this.handleDescriptionChange.bind(this)} /> <Input type="text" label="Reindex Endpoint*" labelClassName="col-xs-2" wrapperClassName="col-xs-10" value={this.state.reindexEndpoint} onChange={this.handleReindexEndpointChange.bind(this)} /> <Input type="select" value={this.state.authType} label="Auth Type*" onChange={this.handleAuthTypeChange.bind(this)} labelClassName="col-xs-2" wrapperClassName="col-xs-10" select> <option value="" selected disabled>Select authentication type ... </option> <option value="api-key">Api key</option> <option value="vpc-peered">VPC peered</option> </Input> <HeadersForm headers={this.state.headers} onChange={(headers) => this.setState({ "headers": headers })} /> <Input label="Settings" labelClassName="col-xs-2" wrapperClassName="wrapper"> <Col xs={4}> <Input type="checkbox" defaultChecked={this.state.supportsToFromParams} onChange={this.handleSupportsToFromParams.bind(this)} label="Supports to/from reindex parameters" /> </Col> <Col xs={4}> <Input type="checkbox" defaultChecked={this.state.supportsCancelReindex} onChange={this.handleSupportsCancelReindex.bind(this)} label="Supports cancelling of a reindex" /> </Col> </Input> <ButtonToolbar> <Button bsStyle="success" className="pull-right" type="submit">Submit</Button> <Button bsStyle="danger" className="pull-right" type="button" onClick={this.exitEditMode}>Cancel</Button> </ButtonToolbar> </form> </div> ); } }