import React from "react"; import Kendra from "aws-sdk/clients/kendra"; import DocumentResults from "./DocumentResults"; import FAQResults from "./FAQResults"; import TopResults from "./TopResults"; import { PAGE_SIZE, Relevance } from "./../constants"; import { AvailableSortingAttributesManager } from "../sorting/AvailableSortingAttributesManager"; import { SelectedSortingAttributeManager } from "../sorting/SelectedSortingAttributeManager"; import { ResultSorting } from "../sorting/ResultSorting"; import "../search.scss"; interface ResultsPanelProps { results: Kendra.QueryResult; topResults: Kendra.QueryResultItemList; faqResults: Kendra.QueryResultItemList; docResults: Kendra.QueryResultItemList; dataReady: boolean; currentPageNumber: number; availableSortingAttributes: AvailableSortingAttributesManager; selectedSortingAttribute: SelectedSortingAttributeManager; onSortingAttributeChange: ( event: React.ChangeEvent ) => void; onSortingOrderChange: ( event: React.MouseEvent ) => void; submitFeedback: ( relevance: Relevance, resultItem: Kendra.QueryResultItem ) => Promise; } export default class ResultsPanel extends React.Component< ResultsPanelProps, {} > { private renderPageIndex = () => { const { currentPageNumber, dataReady, results } = this.props; // Ensure spacing is always correct let pageIndex =  ; if ( dataReady && results?.TotalNumberOfResults && results.TotalNumberOfResults > 0 ) { const pageStart = (currentPageNumber - 1) * PAGE_SIZE + 1; const pageEnd = pageStart + (results.ResultItems!.length - 1); // Actually populate if ready const PRECISION = 3; let resultsLength: string = `${results.TotalNumberOfResults}`; if (resultsLength.length > PRECISION) { // Only get three most significant digits resultsLength = resultsLength.substr(0, PRECISION) + "0".repeat(resultsLength.length - PRECISION); // Add commas based on locale resultsLength = parseInt(resultsLength).toLocaleString(); } if (resultsLength.length > PRECISION) { pageIndex = (   {pageStart}-{pageEnd} of about {resultsLength} ); } else { pageIndex = ( {pageStart}-{pageEnd} of {resultsLength} results ); } } return
{pageIndex}
; }; render() { const { topResults, faqResults, docResults, dataReady, submitFeedback, } = this.props; if (dataReady) { return (
{this.renderPageIndex()}
); } else { return undefined; } } }