|
|
@@ -53,7 +53,15 @@ interface QueryRowProps extends PropsFromParent {
|
|
|
mode: ExploreMode;
|
|
|
}
|
|
|
|
|
|
-export class QueryRow extends PureComponent<QueryRowProps> {
|
|
|
+interface QueryRowState {
|
|
|
+ textEditModeEnabled: boolean;
|
|
|
+}
|
|
|
+
|
|
|
+export class QueryRow extends PureComponent<QueryRowProps, QueryRowState> {
|
|
|
+ state: QueryRowState = {
|
|
|
+ textEditModeEnabled: false,
|
|
|
+ };
|
|
|
+
|
|
|
onRunQuery = () => {
|
|
|
const { exploreId } = this.props;
|
|
|
this.props.runQueries(exploreId);
|
|
|
@@ -95,6 +103,10 @@ export class QueryRow extends PureComponent<QueryRowProps> {
|
|
|
this.props.runQueries(exploreId);
|
|
|
};
|
|
|
|
|
|
+ onClickToggleEditorMode = () => {
|
|
|
+ this.setState({ textEditModeEnabled: !this.state.textEditModeEnabled });
|
|
|
+ };
|
|
|
+
|
|
|
updateLogsHighlights = _.debounce((value: DataQuery) => {
|
|
|
const { datasourceInstance } = this.props;
|
|
|
if (datasourceInstance.getHighlighterExpression) {
|
|
|
@@ -117,6 +129,7 @@ export class QueryRow extends PureComponent<QueryRowProps> {
|
|
|
queryErrors,
|
|
|
mode,
|
|
|
} = this.props;
|
|
|
+ const canToggleEditorModes = _.has(datasourceInstance, 'components.QueryCtrl.prototype.toggleEditorMode');
|
|
|
let QueryField;
|
|
|
|
|
|
if (mode === ExploreMode.Metrics && datasourceInstance.components.ExploreMetricsQueryField) {
|
|
|
@@ -129,9 +142,6 @@ export class QueryRow extends PureComponent<QueryRowProps> {
|
|
|
|
|
|
return (
|
|
|
<div className="query-row">
|
|
|
- <div className="query-row-status">
|
|
|
- <QueryStatus queryResponse={queryResponse} latency={latency} />
|
|
|
- </div>
|
|
|
<div className="query-row-field flex-shrink-1">
|
|
|
{QueryField ? (
|
|
|
<QueryField
|
|
|
@@ -154,10 +164,21 @@ export class QueryRow extends PureComponent<QueryRowProps> {
|
|
|
initialQuery={query}
|
|
|
exploreEvents={exploreEvents}
|
|
|
range={range}
|
|
|
+ textEditModeEnabled={this.state.textEditModeEnabled}
|
|
|
/>
|
|
|
)}
|
|
|
</div>
|
|
|
+ <div className="query-row-status">
|
|
|
+ <QueryStatus queryResponse={queryResponse} latency={latency} />
|
|
|
+ </div>
|
|
|
<div className="gf-form-inline flex-shrink-0">
|
|
|
+ {canToggleEditorModes && (
|
|
|
+ <div className="gf-form">
|
|
|
+ <button className="gf-form-label gf-form-label--btn" onClick={this.onClickToggleEditorMode}>
|
|
|
+ <i className="fa fa-pencil" />
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
<div className="gf-form">
|
|
|
<button className="gf-form-label gf-form-label--btn" onClick={this.onClickClearButton}>
|
|
|
<i className="fa fa-times" />
|