mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
only display scan button if there is at least one existing selector that returned an empty result
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user