Browse Source

Add clear button to Explore

- Clear All button to clear all queries and results
- moved result viewer buttons below query rows to make it more clear
  that they govern result options
David Kaltschmidt 7 năm trước cách đây
mục cha
commit
00f04f4ea0

+ 32 - 16
public/app/containers/Explore/Explore.tsx

@@ -267,6 +267,15 @@ export class Explore extends React.Component<any, IExploreState> {
     }
     }
   };
   };
 
 
+  onClickClear = () => {
+    this.setState({
+      graphResult: null,
+      logsResult: null,
+      queries: ensureQueries(),
+      tableResult: null,
+    });
+  };
+
   onClickTableCell = (columnKey: string, rowValue: string) => {
   onClickTableCell = (columnKey: string, rowValue: string) => {
     const { datasource, queries } = this.state;
     const { datasource, queries } = this.state;
     if (datasource && datasource.modifyQuery) {
     if (datasource && datasource.modifyQuery) {
@@ -466,24 +475,12 @@ export class Explore extends React.Component<any, IExploreState> {
               </button>
               </button>
             </div>
             </div>
           ) : null}
           ) : null}
+          <TimePicker range={range} onChangeTime={this.handleChangeTime} />
           <div className="navbar-buttons">
           <div className="navbar-buttons">
-            {supportsGraph ? (
-              <button className={`btn navbar-button ${graphButtonActive}`} onClick={this.handleClickGraphButton}>
-                Graph
-              </button>
-            ) : null}
-            {supportsTable ? (
-              <button className={`btn navbar-button ${tableButtonActive}`} onClick={this.handleClickTableButton}>
-                Table
-              </button>
-            ) : null}
-            {supportsLogs ? (
-              <button className={`btn navbar-button ${logsButtonActive}`} onClick={this.handleClickLogsButton}>
-                Logs
-              </button>
-            ) : null}
+            <button className="btn navbar-button navbar-button--no-icon" onClick={this.onClickClear}>
+              Clear All
+            </button>
           </div>
           </div>
-          <TimePicker range={range} onChangeTime={this.handleChangeTime} />
           <div className="navbar-buttons relative">
           <div className="navbar-buttons relative">
             <button className="btn navbar-button--primary" onClick={this.handleSubmit}>
             <button className="btn navbar-button--primary" onClick={this.handleSubmit}>
               Run Query <i className="fa fa-level-down run-icon" />
               Run Query <i className="fa fa-level-down run-icon" />
@@ -514,6 +511,25 @@ export class Explore extends React.Component<any, IExploreState> {
               onRemoveQueryRow={this.handleRemoveQueryRow}
               onRemoveQueryRow={this.handleRemoveQueryRow}
             />
             />
             {queryError && !loading ? <div className="text-warning m-a-2">{queryError}</div> : null}
             {queryError && !loading ? <div className="text-warning m-a-2">{queryError}</div> : null}
+
+            <div className="result-options">
+              {supportsGraph ? (
+                <button className={`btn navbar-button ${graphButtonActive}`} onClick={this.handleClickGraphButton}>
+                  Graph
+                </button>
+              ) : null}
+              {supportsTable ? (
+                <button className={`btn navbar-button ${tableButtonActive}`} onClick={this.handleClickTableButton}>
+                  Table
+                </button>
+              ) : null}
+              {supportsLogs ? (
+                <button className={`btn navbar-button ${logsButtonActive}`} onClick={this.handleClickLogsButton}>
+                  Logs
+                </button>
+              ) : null}
+            </div>
+
             <main className="m-t-2">
             <main className="m-t-2">
               {supportsGraph && showingGraph ? (
               {supportsGraph && showingGraph ? (
                 <Graph
                 <Graph

+ 2 - 1
public/app/containers/Explore/Graph.tsx

@@ -84,7 +84,9 @@ class Graph extends Component<any, any> {
 
 
   draw() {
   draw() {
     const { data, options: userOptions } = this.props;
     const { data, options: userOptions } = this.props;
+    const $el = $(`#${this.props.id}`);
     if (!data) {
     if (!data) {
+      $el.empty();
       return;
       return;
     }
     }
     const series = data.map((ts: TimeSeries) => ({
     const series = data.map((ts: TimeSeries) => ({
@@ -93,7 +95,6 @@ class Graph extends Component<any, any> {
       data: ts.getFlotPairs('null'),
       data: ts.getFlotPairs('null'),
     }));
     }));
 
 
-    const $el = $(`#${this.props.id}`);
     const ticks = $el.width() / 100;
     const ticks = $el.width() / 100;
     let { from, to } = userOptions.range;
     let { from, to } = userOptions.range;
     if (!moment.isMoment(from)) {
     if (!moment.isMoment(from)) {

+ 8 - 0
public/sass/pages/_explore.scss

@@ -47,6 +47,14 @@
     background-color: $btn-active-bg;
     background-color: $btn-active-bg;
   }
   }
 
 
+  .navbar-button--no-icon {
+    line-height: 18px;
+  }
+
+  .result-options {
+    margin-top: 2 * $panel-margin;
+  }
+
   .elapsed-time {
   .elapsed-time {
     position: absolute;
     position: absolute;
     left: 0;
     left: 0;