<div class="tab-pane" data-bind="attr:{id: tabId}" role="tabpanel"> <div class="tabPaneContentContainer"> <div class="mongoQueryHelper" data-bind="visible: isPreferredApiMongoDB && sqlQueryEditorContent().length === 0"> Start by writing a Mongo query, for example: <strong>{'id':'foo'}</strong> or <strong>{ }</strong> to get all the documents. </div> <div class="warningErrorContainer" aria-live="assertive" data-bind="visible: maybeSubQuery"> <div class="warningErrorContent"> <span><img class="paneErrorIcon" src="/info_color.svg" alt="Error" /></span> <span class="warningErrorDetailsLinkContainer"> We have detected you may be using a subquery. Non-correlated subqueries are not currently supported. <a href="https://docs.microsoft.com/en-us/azure/cosmos-db/sql-query-subquery" >Please see Cosmos sub query documentation for further information</a > </span> </div> </div> <div class="queryEditorWithSplitter" data-bind="attr: { id: queryEditorId }"> <editor class="queryEditor" data-bind="css: { mongoQueryEditor: isPreferredApiMongoDB }" params="{ content: initialEditorContent, contentType: monacoSettings.language, isReadOnly: monacoSettings.readOnly, lineNumbers: 'on', ariaLabel: 'Editing Query', updatedContent: sqlQueryEditorContent, selectedContent: selectedContent }" ></editor> <!-- Splitter - Start --> <div class="splitter ui-resizable-handle ui-resizable-s" data-bind="attr: { id: splitterId }"> <img class="queryEditorHorizontalSplitter" src="/HorizontalSplitter.svg" alt="Splitter" /> </div> </div> <!-- Splitter - End --> <!-- Script for results metadata that is common to all APIs --> <script type="text/html" id="result-metadata-template"> <span> <span data-bind="text: showingDocumentsDisplayText"></span> </span> <span class="queryResultDivider" data-bind="visible: fetchNextPageButton.enabled"> | </span> <span class="queryResultNextEnable" data-bind="visible: fetchNextPageButton.enabled"> <a data-bind="click: onFetchNextPageClick"> <span>Load more</span> <img class="queryResultnextImg" src="/Query-Editor-Next.svg" alt="Fetch next page" /> </a> </span> </script> <!-- Query Errors Tab - Start--> <div class="active queryErrorsHeaderContainer" data-bind="visible: !!error()"> <span class="queryErrors" data-toggle="tab" data-bind="attr: { href: '#queryerrors' + tabId }">Errors</span> </div> <!-- Query Errors Tab - End --> <!-- Query Results & Errors Content Container - Start--> <div class="queryResultErrorContentContainer"> <div class="queryEditorWatermark" data-bind="visible: allResultsMetadata().length === 0 && !error() && !queryResults() && !isExecuting()" > <p><img src="/RunQuery.png" alt="Execute Query Watermark" /></p> <p class="queryEditorWatermarkText">Execute a query to see the results</p> </div> <div class="queryResultsErrorsContent" data-bind="visible: allResultsMetadata().length > 0 || !!error() || queryResults()" > <div class="togglesWithMetadata" data-bind="visible: !error()"> <div class="toggles" aria-label="Successful execution" id="execute-query-toggles" data-bind="event: { keydown: onToggleKeyDown }" tabindex="0" > <div class="tab"> <input type="radio" class="radio" value="result" /> <span class="toggleSwitch" role="button" tabindex="0" data-bind="click: toggleResult, css:{ selectedToggle: isResultToggled(), unselectedToggle: !isResultToggled() }" aria-label="Results" >Results</span > </div> <div class="tab"> <input type="radio" class="radio" value="logs" /> <span class="toggleSwitch" role="button" tabindex="0" data-bind="click: toggleMetrics, css:{ selectedToggle: isMetricsToggled(), unselectedToggle: !isMetricsToggled() }" aria-label="Query stats" >Query Stats</span > </div> </div> <div class="result-metadata" data-bind="template: { name: 'result-metadata-template' }, visible: isResultToggled()" ></div> </div> <json-editor params="{ content: queryResults, isReadOnly: true, ariaLabel: 'Query results' }" data-bind="visible: queryResults() && queryResults().length > 0 && isResultToggled() && allResultsMetadata().length > 0 && !error()" > </json-editor> <div class="queryMetricsSummaryContainer" data-bind="visible: isMetricsToggled() && allResultsMetadata().length > 0 && !error()" > <table class="queryMetricsSummary"> <caption> Query Statistics </caption> <thead class="queryMetricsSummaryHead"> <tr class="queryMetricsSummaryHeader queryMetricsSummaryTuple"> <th title="METRIC" scope="col">METRIC</th> <th title="VALUE" scope="col">VALUE</th> </tr> </thead> <tbody class="queryMetricsSummaryBody" data-bind="with: aggregatedQueryMetrics"> <tr class="queryMetricsSummaryTuple"> <td title="Request Charge">Request Charge</td> <td> <span data-bind="text: $parent.requestChargeDisplayText, attr: { title: $parent.requestChargeDisplayText }" ></span> </td> </tr> <tr class="queryMetricsSummaryTuple"> <td title="Showing Results">Showing Results</td> <td> <span data-bind="text: $parent.showingDocumentsDisplayText, attr: { title: $parent.showingDocumentsDisplayText }" ></span> </td> </tr> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.isQueryMetricsEnabled"> <td> <span title="Retrieved document count">Retrieved document count</span> <span class="queryMetricInfoTooltip" role="tooltip" tabindex="0"> <img class="infoImg" src="/info-bubble.svg" alt="More information" /> <span class="queryMetricTooltipText">Total number of retrieved documents</span> </span> </td> <td><span data-bind="text: retrievedDocumentCount, attr: { title: retrievedDocumentCount }"></span></td> </tr> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.isQueryMetricsEnabled"> <td> <span title="Retrieved document size">Retrieved document size</span> <span class="queryMetricInfoTooltip" role="tooltip" tabindex="0"> <img class="infoImg" src="/info-bubble.svg" alt="More information" /> <span class="queryMetricTooltipText">Total size of retrieved documents in bytes</span> </span> </td> <td> <span data-bind="text: retrievedDocumentSize, attr: { title: retrievedDocumentSize }"></span> <span>bytes</span> </td> </tr> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.isQueryMetricsEnabled"> <td> <span title="Output document count">Output document count</span> <span class="queryMetricInfoTooltip" role="tooltip" tabindex="0"> <img class="infoImg" src="/info-bubble.svg" alt="More information" /> <span class="queryMetricTooltipText">Number of output documents</span> </span> </td> <td><span data-bind="text: outputDocumentCount, attr: { title: outputDocumentCount }"></span></td> </tr> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.isQueryMetricsEnabled"> <td> <span title="Output document size">Output document size</span> <span class="queryMetricInfoTooltip" role="tooltip" tabindex="0"> <img class="infoImg" src="/info-bubble.svg" alt="More information" /> <span class="queryMetricTooltipText">Total size of output documents in bytes</span> </span> </td> <td> <span data-bind="text: outputDocumentSize, attr: { title: outputDocumentSize }"></span> <span>bytes</span> </td> </tr> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.isQueryMetricsEnabled"> <td> <span title="Index hit document count">Index hit document count</span> <span class="queryMetricInfoTooltip" role="tooltip" tabindex="0"> <img class="infoImg" src="/info-bubble.svg" alt="More information" /> <span class="queryMetricTooltipText">Total number of documents matched by the filter</span> </span> </td> <td><span data-bind="text: indexHitDocumentCount, attr: { title: indexHitDocumentCount }"></span></td> </tr> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.isQueryMetricsEnabled"> <td> <span title="Index lookup time">Index lookup time</span> <span class="queryMetricInfoTooltip" role="tooltip" tabindex="0"> <img class="infoImg" src="/info-bubble.svg" alt="More information" /> <span class="queryMetricTooltipText">Time spent in physical index layer</span> </span> </td> <td> <span data-bind="text: indexLookupTime, attr: { title: indexLookupTime }"></span> <span>ms</span> </td> </tr> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.isQueryMetricsEnabled"> <td> <span title="Document load time">Document load time</span> <span class="queryMetricInfoTooltip" role="tooltip" tabindex="0"> <img class="infoImg" src="/info-bubble.svg" alt="More information" /> <span class="queryMetricTooltipText">Time spent in loading documents</span> </span> </td> <td> <span data-bind="text: documentLoadTime, attr: { title: documentLoadTime }"></span> <span>ms</span> </td> </tr> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.isQueryMetricsEnabled"> <td> <span title="Query engine execution time">Query engine execution time</span> <span class="queryMetricInfoTooltip" role="tooltip" tabindex="0"> <img class="infoImg" src="/info-bubble.svg" alt="More information" /> <span class="queryMetricTooltipText queryEngineExeTimeInfo" >Time spent by the query engine to execute the query expression (excludes other execution times like load documents or write results)</span > </span> </td> <td> <span data-bind="text: runtimeExecutionTimes.queryEngineExecutionTime, attr: { title: runtimeExecutionTimes.queryEngineExecutionTime }" ></span> <span>ms</span> </td> </tr> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.isQueryMetricsEnabled"> <td> <span title="System function execution time">System function execution time</span> <span class="queryMetricInfoTooltip" role="tooltip" tabindex="0"> <img class="infoImg" src="/info-bubble.svg" alt="More information" /> <span class="queryMetricTooltipText">Total time spent executing system (built-in) functions</span> </span> </td> <td> <span data-bind="text: runtimeExecutionTimes.systemFunctionExecutionTime, attr: { title: runtimeExecutionTimes.systemFunctionExecutionTime }" ></span> <span>ms</span> </td> </tr> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.isQueryMetricsEnabled"> <td> <span title="User defined function execution time">User defined function execution time</span> <span class="queryMetricInfoTooltip" role="tooltip" tabindex="0"> <img class="infoImg" src="/info-bubble.svg" alt="More information" /> <span class="queryMetricTooltipText">Total time spent executing user-defined functions</span> </span> </td> <td> <span data-bind="text: runtimeExecutionTimes.userDefinedFunctionExecutionTime, attr: { title: runtimeExecutionTimes.userDefinedFunctionExecutionTime }" ></span> <span>ms</span> </td> </tr> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.isQueryMetricsEnabled"> <td> <span title="Document write time">Document write time</span> <span class="queryMetricInfoTooltip" role="tooltip" tabindex="0"> <img class="infoImg" src="/info-bubble.svg" alt="More information" /> <span class="queryMetricTooltipText">Time spent to write query result set to response buffer</span> </span> </td> <td> <span data-bind="text: documentWriteTime, attr: { title: documentWriteTime }"></span> <span>ms</span> </td> </tr> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.roundTrips() != null"> <td title="Round Trips">Round Trips</td> <td><span data-bind="text: $parent.roundTrips, attr: { title: $parent.roundTrips }"></span></td> </tr> <!-- TODO: Report activity id for mongo queries --> <tr class="queryMetricsSummaryTuple" data-bind="visible: $parent.activityId() != null"> <td title="Activity id">Activity id</td> <td></td> <td><span data-bind="text: $parent.activityId, attr: { title: $parent.activityId }"></span></td> </tr> </tbody> </table> <div class="downloadMetricsLinkContainer" data-bind="visible: $parent.isQueryMetricsEnabled"> <a id="downloadMetricsLink" role="button" tabindex="0" data-bind="event: { click: onDownloadQueryMetricsCsvClick, keypress: onDownloadQueryMetricsCsvKeyPress }" > <img class="downloadCsvImg" src="/DownloadQuery.svg" alt="download query metrics csv" /> <span>Per-partition query metrics (CSV)</span> </a> </div> </div> <!-- Query Errors Content - Start--> <div class="tab-pane active" data-bind=" id: { href: 'queryerrors' + tabId }, visible: !!error()" > <div class="errorContent"> <span class="errorMessage" data-bind="text: error"></span> <span class="errorDetailsLink"> <a data-bind="click: $parent.onErrorDetailsClick, event: { keypress: $parent.onErrorDetailsKeyPress }" id="error-display" tabindex="0" aria-label="Error details link" >More details</a > </span> </div> </div> <!-- Query Errors Content - End--> </div> </div> <!-- Results & Errors Content Container - End--> </div> </div>