- {(hasMoreResultsInCache) &&
-
-
- Loading...
-
}
- {(false === hasMoreResultsInCache && hasMoreResultsInTotal) &&
-
-
-
- Showing the top
- {" "}
- {SEARCH_MAX_NUM_RESULTS}
- {" "}
- results by time. To view any other results, please refine your search.
-
-
}
-
- );
-};
-
-export default SearchResultsLoadSensor;
diff --git a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsLoadSensor.scss b/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsLoadSensor.scss
deleted file mode 100644
index c9881458b3..0000000000
--- a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsLoadSensor.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-.search-results-load-sensor-content {
- display: flex;
- align-items: center;
- gap: 10px;
- padding-inline: 10px;
- padding-bottom: 12px;
-
- font-size: 1.3rem;
-}
diff --git a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsTable.scss b/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsTable.scss
deleted file mode 100644
index 063900dfb3..0000000000
--- a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsTable.scss
+++ /dev/null
@@ -1,61 +0,0 @@
-.search-results-container {
- overflow-y: auto;
- background: white;
-}
-
-// NOTE: We use a hierarchical selector to override Bootstrap's hierarchical selector (classes can't override hierarchical selectors without !important)
-.search-results thead th {
- border: none;
- padding: 0;
-}
-
-.search-results-th {
- position: sticky;
- top: 0;
-
- &-sortable {
- cursor: pointer;
- user-select: none;
- }
-}
-
-.search-results-table-header {
- background-color: #fff;
- border-bottom: 1px solid #ccc;
- border-top: 1px solid #dee2e6;
- padding: 10px;
-}
-
-.search-results-content {
- overflow: auto;
-
- font-size: 0.875rem;
- line-height: var(--search-results-message-line-height);
-}
-
-.search-results-timestamp {
- color: #69707D !important;
- font-family: "Roboto", sans-serif;
- font-weight: 500;
- white-space: nowrap;
-}
-
-.search-results-message {
- margin: 0;
- max-height: var(--search-results-message-max-height);
-
- font-family: "Roboto Mono", monospace;
- font-weight: 400;
- white-space: pre-wrap;
- word-break: break-word;
-}
-
-.search-results-file-link {
- margin-top: 0.25rem;
-
- color: grey;
- font-family: 'Roboto', sans-serif;
- font-size: 0.875rem;
- font-weight: 400;
- line-height: 1.5;
-}
diff --git a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/index.jsx b/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/index.jsx
deleted file mode 100644
index c7fa62a25a..0000000000
--- a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/index.jsx
+++ /dev/null
@@ -1,188 +0,0 @@
-import {Meteor} from "meteor/meteor";
-import {useEffect} from "react";
-import Table from "react-bootstrap/Table";
-
-import dayjs from "dayjs";
-
-import {
- faFileLines,
- faSort,
- faSortDown,
- faSortUp,
-} from "@fortawesome/free-solid-svg-icons";
-import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
-
-import {
- MONGO_SORT_ORDER,
- SEARCH_RESULTS_FIELDS,
-} from "/imports/api/search/constants";
-import {DATETIME_FORMAT_TEMPLATE} from "/imports/utils/datetime";
-
-import SearchResultsLoadSensor from "./SearchResultsLoadSensor";
-
-import "./SearchResultsTable.scss";
-
-
-/**
- * For calculating max message height from `maxLinesPerResult`.
- */
-const SEARCH_RESULT_MESSAGE_LINE_HEIGHT = 1.5;
-
-const IS_IR_STREAM = ("clp" === Meteor.settings.public.ClpStorageEngine);
-const STREAM_TYPE = IS_IR_STREAM ?
- "ir" :
- "json";
-
-
-/**
- * Gets the stream id for an extraction job from the search result.
- *
- * @param {object} searchResult
- * @return {string} stream_id
- */
-const getStreamId = (searchResult) => {
- return IS_IR_STREAM ?
- searchResult.orig_file_id :
- searchResult.archive_id;
-};
-
-
-/**
- * Represents a table component to display search results.
- *
- * @param {object} props
- * @param {object} props.fieldToSortBy
- * @param {boolean} props.hasMoreResultsInCache
- * @param {boolean} props.hasMoreResultsInTotal
- * @param {number} props.maxLinesPerResult
- * @param {Function} props.onLoadMoreResults
- * @param {object[]} props.searchResults
- * @param {Function} props.setFieldToSortBy
- * @return {React.ReactElement}
- */
-const SearchResultsTable = ({
- fieldToSortBy,
- hasMoreResultsInCache,
- hasMoreResultsInTotal,
- maxLinesPerResult,
- onLoadMoreResults,
- searchResults,
- setFieldToSortBy,
-}) => {
- const getSortIcon = (fieldName) => {
- if (fieldName === fieldToSortBy.name) {
- return (MONGO_SORT_ORDER.ASCENDING === fieldToSortBy.direction) ?
- faSortUp :
- faSortDown;
- }
-
- return faSort;
- };
-
- const toggleSortDirection = (event) => {
- const {columnName} = event.currentTarget.dataset;
- if (fieldToSortBy.name !== columnName) {
- setFieldToSortBy({
- name: columnName,
- direction: (SEARCH_RESULTS_FIELDS.TIMESTAMP === columnName) ?
- MONGO_SORT_ORDER.DESCENDING :
- MONGO_SORT_ORDER.ASCENDING,
- });
- } else {
- setFieldToSortBy({
- name: columnName,
- direction: (MONGO_SORT_ORDER.ASCENDING === fieldToSortBy.direction) ?
- MONGO_SORT_ORDER.DESCENDING :
- MONGO_SORT_ORDER.ASCENDING,
- });
- }
- };
-
- useEffect(() => {
- document.documentElement.style.setProperty(
- "--search-results-message-line-height",
- `${SEARCH_RESULT_MESSAGE_LINE_HEIGHT}rem`
- );
- }, []);
-
- useEffect(() => {
- document.documentElement.style.setProperty(
- "--search-results-message-max-height",
- `${(SEARCH_RESULT_MESSAGE_LINE_HEIGHT * maxLinesPerResult)}rem`
- );
- }, [maxLinesPerResult]);
-
- return (
-