Просмотр исходного кода

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

Erik Sundell 7 лет назад
Родитель
Сommit
541a691aca

+ 1 - 0
public/app/core/logs_model.ts

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

+ 11 - 4
public/app/core/utils/explore.ts

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

+ 1 - 1
public/app/features/explore/Explore.tsx

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

+ 1 - 1
public/app/features/explore/Logs.tsx

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