only display scan button if there is at least one existing selector that returned an empty result

This commit is contained in:
Erik Sundell
2018-12-04 11:00:21 +01:00
parent e21ca3f545
commit 541a691aca
4 changed files with 14 additions and 6 deletions

View File

@@ -62,6 +62,7 @@ export interface LogsModel {
meta?: LogsMetaItem[]; meta?: LogsMetaItem[];
rows: LogRow[]; rows: LogRow[];
series?: TimeSeries[]; series?: TimeSeries[];
queryEmpty?: boolean;
} }
export interface LogsStream { export interface LogsStream {

View File

@@ -133,7 +133,12 @@ export function ensureQueries(queries?: DataQuery[]): DataQuery[] {
* A target is non-empty when it has keys other than refId and key. * A target is non-empty when it has keys other than refId and key.
*/ */
export function hasNonEmptyQuery(queries: DataQuery[]): boolean { export function hasNonEmptyQuery(queries: DataQuery[]): boolean {
return queries.some(query => Object.keys(query).length > 2); return queries.some(
query =>
Object.keys(query)
.map(k => query[k])
.filter(v => v).length > 2
);
} }
export function calculateResultsFromQueryTransactions( export function calculateResultsFromQueryTransactions(
@@ -148,15 +153,17 @@ export function calculateResultsFromQueryTransactions(
new TableModel(), new TableModel(),
...queryTransactions.filter(qt => qt.resultType === 'Table' && qt.done && qt.result).map(qt => qt.result) ...queryTransactions.filter(qt => qt.resultType === 'Table' && qt.done && qt.result).map(qt => qt.result)
); );
const logsResult = const logsResult = {
datasource && datasource.mergeStreams ...datasource && datasource.mergeStreams
? datasource.mergeStreams( ? datasource.mergeStreams(
_.flatten( _.flatten(
queryTransactions.filter(qt => qt.resultType === 'Logs' && qt.done && qt.result).map(qt => qt.result) queryTransactions.filter(qt => qt.resultType === 'Logs' && qt.done && qt.result).map(qt => qt.result)
), ),
graphInterval graphInterval
) )
: undefined; : undefined,
queryEmpty: queryTransactions.filter(qt => qt.resultType === 'Logs' && qt.done).every(qt => qt.result.length === 0),
};
return { return {
graphResult, graphResult,

View File

@@ -220,7 +220,7 @@ export class Explore extends React.PureComponent<ExploreProps, ExploreState> {
modifiedQueries = [...this.modifiedQueries]; modifiedQueries = [...this.modifiedQueries];
} else if (datasource.importQueries) { } else if (datasource.importQueries) {
// Datasource-specific importers // Datasource-specific importers
modifiedQueries = await datasource.importQueries(this.modifiedQueries, origin.meta); modifiedQueries = await datasource.importQueries(this.modifiedQueries, datasource.meta);
} else { } else {
// Default is blank queries // Default is blank queries
modifiedQueries = ensureQueries(); modifiedQueries = ensureQueries();

View File

@@ -358,7 +358,7 @@ export default class Logs extends PureComponent<LogsProps, LogsState> {
{hasData && deferLogs && <span>Rendering {dedupedData.rows.length} rows...</span>} {hasData && deferLogs && <span>Rendering {dedupedData.rows.length} rows...</span>}
</div> </div>
{!loading && {!loading &&
!hasData && data.queryEmpty &&
!scanning && ( !scanning && (
<div className="logs-nodata"> <div className="logs-nodata">
No logs found. No logs found.