diff options
Diffstat (limited to 'frontend/src/components/dialogs')
-rw-r--r-- | frontend/src/components/dialogs/CommentDialog.jsx | 70 | ||||
-rw-r--r-- | frontend/src/components/dialogs/CopyDialog.jsx | 69 | ||||
-rw-r--r-- | frontend/src/components/dialogs/Filters.jsx | 85 |
3 files changed, 0 insertions, 224 deletions
diff --git a/frontend/src/components/dialogs/CommentDialog.jsx b/frontend/src/components/dialogs/CommentDialog.jsx deleted file mode 100644 index 970aa83..0000000 --- a/frontend/src/components/dialogs/CommentDialog.jsx +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of caronte (https://github.com/eciavatta/caronte). - * Copyright (c) 2020 Emiliano Ciavatta. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -import React, {Component} from "react"; -import {Modal} from "react-bootstrap"; -import backend from "../../backend"; -import log from "../../log"; -import ButtonField from "../fields/ButtonField"; -import TextField from "../fields/TextField"; - -class CommentDialog extends Component { - - state = {}; - - componentDidMount() { - this.setState({comment: this.props.initialComment || ""}); - } - - setComment = () => { - if (this.state.comment === this.props.initialComment) { - return this.close(); - } - const comment = this.state.comment || null; - backend.post(`/api/connections/${this.props.connectionId}/comment`, {comment}) - .then((_) => { - this.close(); - }).catch((e) => { - log.error(e); - this.setState({error: "failed to save comment"}); - }); - }; - - close = () => this.props.onSave(this.state.comment || null); - - render() { - return ( - <Modal show size="md" aria-labelledby="comment-dialog" centered> - <Modal.Header> - <Modal.Title id="comment-dialog"> - ~/.comment - </Modal.Title> - </Modal.Header> - <Modal.Body> - <TextField value={this.state.comment} onChange={(comment) => this.setState({comment})} - rows={7} error={this.state.error}/> - </Modal.Body> - <Modal.Footer className="dialog-footer"> - <ButtonField variant="red" bordered onClick={this.close} name="cancel"/> - <ButtonField variant="green" bordered onClick={this.setComment} name="save"/> - </Modal.Footer> - </Modal> - ); - } -} - -export default CommentDialog; diff --git a/frontend/src/components/dialogs/CopyDialog.jsx b/frontend/src/components/dialogs/CopyDialog.jsx deleted file mode 100644 index 069fd2e..0000000 --- a/frontend/src/components/dialogs/CopyDialog.jsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - * This file is part of caronte (https://github.com/eciavatta/caronte). - * Copyright (c) 2020 Emiliano Ciavatta. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -import React, {Component} from "react"; -import {Modal} from "react-bootstrap"; -import ButtonField from "../fields/ButtonField"; -import TextField from "../fields/TextField"; - -class CopyDialog extends Component { - - state = { - copyButtonText: "copy" - }; - - constructor(props) { - super(props); - this.textbox = React.createRef(); - } - - copyActionValue = () => { - this.textbox.current.select(); - document.execCommand("copy"); - this.setState({copyButtonText: "copied!"}); - this.timeoutHandle = setTimeout(() => this.setState({copyButtonText: "copy"}), 3000); - }; - - componentWillUnmount() { - if (this.timeoutHandle) { - clearTimeout(this.timeoutHandle); - } - } - - render() { - return ( - <Modal show={true} size="lg" aria-labelledby="message-action-dialog" centered> - <Modal.Header> - <Modal.Title id="message-action-dialog"> - {this.props.name} - </Modal.Title> - </Modal.Header> - <Modal.Body> - <TextField readonly={this.props.readonly} value={this.props.value} textRef={this.textbox} - rows={15}/> - </Modal.Body> - <Modal.Footer className="dialog-footer"> - <ButtonField variant="red" bordered onClick={this.props.onHide} name="close"/> - <ButtonField variant="green" bordered onClick={this.copyActionValue} - name={this.state.copyButtonText}/> - </Modal.Footer> - </Modal> - ); - } -} - -export default CopyDialog; diff --git a/frontend/src/components/dialogs/Filters.jsx b/frontend/src/components/dialogs/Filters.jsx deleted file mode 100644 index a2407df..0000000 --- a/frontend/src/components/dialogs/Filters.jsx +++ /dev/null @@ -1,85 +0,0 @@ -/* - * This file is part of caronte (https://github.com/eciavatta/caronte). - * Copyright (c) 2020 Emiliano Ciavatta. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -import React, {Component} from "react"; -import {Modal} from "react-bootstrap"; -import {cleanNumber, validateIpAddress, validateMin, validatePort} from "../../utils"; -import ButtonField from "../fields/ButtonField"; -import StringConnectionsFilter from "../filters/StringConnectionsFilter"; -import "./Filters.scss"; - -class Filters extends Component { - - render() { - return ( - <Modal - {...this.props} - show={true} - size="lg" - aria-labelledby="filters-dialog" - centered - > - <Modal.Header> - <Modal.Title id="filters-dialog"> - ~/advanced_filters - </Modal.Title> - </Modal.Header> - <Modal.Body> - <div className="advanced-filters d-flex"> - <div className="flex-fill"> - <StringConnectionsFilter filterName="client_address" - defaultFilterValue="all_addresses" - validateFunc={validateIpAddress} - key="client_address_filter"/> - <StringConnectionsFilter filterName="min_duration" - defaultFilterValue="0" - replaceFunc={cleanNumber} - validateFunc={validateMin(0)} - key="min_duration_filter"/> - <StringConnectionsFilter filterName="min_bytes" - defaultFilterValue="0" - replaceFunc={cleanNumber} - validateFunc={validateMin(0)} - key="min_bytes_filter"/> - </div> - - <div className="flex-fill"> - <StringConnectionsFilter filterName="client_port" - defaultFilterValue="all_ports" - replaceFunc={cleanNumber} - validateFunc={validatePort} - key="client_port_filter"/> - <StringConnectionsFilter filterName="max_duration" - defaultFilterValue="∞" - replaceFunc={cleanNumber} - key="max_duration_filter"/> - <StringConnectionsFilter filterName="max_bytes" - defaultFilterValue="∞" - replaceFunc={cleanNumber} - key="max_bytes_filter"/> - </div> - </div> - </Modal.Body> - <Modal.Footer className="dialog-footer"> - <ButtonField variant="red" bordered onClick={this.props.onHide} name="close"/> - </Modal.Footer> - </Modal> - ); - } -} - -export default Filters; |