+
+ {message}
+
+
+
+
+
+
+
+ {
+ error &&
+
+ {error.toString()}
+
+ }
+
+
+ {info.componentStack}
+
+
+
+ );
+}
+
+ErrorBoundaryError.propTypes = {
+ className: PropTypes.string.isRequired,
+ messageClassName: PropTypes.string.isRequired,
+ detailsClassName: PropTypes.string.isRequired,
+ message: PropTypes.string.isRequired,
+ error: PropTypes.object.isRequired,
+ info: PropTypes.object.isRequired
+};
+
+ErrorBoundaryError.defaultProps = {
+ className: styles.container,
+ messageClassName: styles.message,
+ detailsClassName: styles.details,
+ message: 'There was an error loading this content'
+};
+
+export default ErrorBoundaryError;
diff --git a/frontend/src/Components/FileBrowser/FileBrowserModalContentConnector.js b/frontend/src/Components/FileBrowser/FileBrowserModalContentConnector.js
index 71b463292..fe577b896 100644
--- a/frontend/src/Components/FileBrowser/FileBrowserModalContentConnector.js
+++ b/frontend/src/Components/FileBrowser/FileBrowserModalContentConnector.js
@@ -35,7 +35,7 @@ function createMapStateToProps() {
directories,
files,
paths: filteredPaths,
- isWindowsService: true || systemStatus.isWindows && systemStatus.mode === 'service'
+ isWindowsService: systemStatus.isWindows && systemStatus.mode === 'service'
};
}
);
diff --git a/frontend/src/Components/Filter/Builder/FilterBuilderModalContent.js b/frontend/src/Components/Filter/Builder/FilterBuilderModalContent.js
index d2a72b67c..ed3bc2409 100644
--- a/frontend/src/Components/Filter/Builder/FilterBuilderModalContent.js
+++ b/frontend/src/Components/Filter/Builder/FilterBuilderModalContent.js
@@ -3,6 +3,7 @@ import React, { Component } from 'react';
import { inputTypes } from 'Helpers/Props';
import FormInputGroup from 'Components/Form/FormInputGroup';
import Button from 'Components/Link/Button';
+import SpinnerErrorButton from 'Components/Link/SpinnerErrorButton';
import ModalContent from 'Components/Modal/ModalContent';
import ModalHeader from 'Components/Modal/ModalHeader';
import ModalBody from 'Components/Modal/ModalBody';
@@ -34,6 +35,28 @@ class FilterBuilderModalContent extends Component {
};
}
+ componentDidUpdate(prevProps) {
+ const {
+ id,
+ customFilters,
+ isSaving,
+ saveError,
+ dispatchSetFilter,
+ onModalClose
+ } = this.props;
+
+ if (prevProps.isSaving && !isSaving && !saveError) {
+ if (id) {
+ dispatchSetFilter({ selectedFilterKey: id });
+ } else {
+ const last = customFilters[customFilters.length -1];
+ dispatchSetFilter({ selectedFilterKey: last.id });
+ }
+
+ onModalClose();
+ }
+ }
+
//
// Listeners
@@ -70,9 +93,9 @@ class FilterBuilderModalContent extends Component {
onSaveFilterPress = () => {
const {
- customFilterKey: key,
- onSaveCustomFilterPress,
- onModalClose
+ id,
+ customFilterType,
+ onSaveCustomFilterPress
} = this.props;
const {
@@ -92,8 +115,12 @@ class FilterBuilderModalContent extends Component {
return;
}
- onSaveCustomFilterPress({ key, label, filters });
- onModalClose();
+ onSaveCustomFilterPress({
+ id,
+ type: customFilterType,
+ label,
+ filters
+ });
}
//
@@ -103,6 +130,8 @@ class FilterBuilderModalContent extends Component {
const {
sectionItems,
filterBuilderProps,
+ isSaving,
+ saveError,
onModalClose
} = this.props;
@@ -161,17 +190,17 @@ class FilterBuilderModalContent extends Component {