|
1 |
| -import { ResourceSelector } from '@grafana/aws-sdk'; |
| 1 | +import { ResourceSelector, QueryEditorHeader } from '@grafana/aws-sdk'; |
2 | 2 | import { QueryEditorProps, SelectableValue } from '@grafana/data';
|
3 | 3 | import { Select, Switch, useStyles2 } from '@grafana/ui';
|
4 | 4 | import React, { useEffect, useState } from 'react';
|
@@ -106,112 +106,120 @@ export function QueryEditor(props: Props) {
|
106 | 106 | }, [database, table]);
|
107 | 107 |
|
108 | 108 | return (
|
109 |
| - <EditorRows> |
110 |
| - <EditorRow> |
111 |
| - <EditorFieldGroup> |
112 |
| - <EditorField label="Database" tooltip="Use macro $__database to reference the selected database"> |
113 |
| - <ResourceSelector |
114 |
| - id="database" |
115 |
| - onChange={onChangeSelector('database')} |
116 |
| - resources={databases} |
117 |
| - value={database || null} |
118 |
| - tooltip="Use the selected schema with the $__database macro" |
119 |
| - label={selectors.components.ConfigEditor.defaultDatabase.input} |
120 |
| - data-testid={selectors.components.ConfigEditor.defaultDatabase.wrapper} |
121 |
| - labelWidth={11} |
122 |
| - className="width-12" |
123 |
| - /> |
124 |
| - </EditorField> |
125 |
| - <EditorField label="Table" tooltip="Use macro $__table to reference the selected table"> |
126 |
| - <ResourceSelector |
127 |
| - id="table" |
128 |
| - onChange={onChangeSelector('table')} |
129 |
| - resources={tables} |
130 |
| - value={table || null} |
131 |
| - tooltip="Use the selected table with the $__table macro" |
132 |
| - label={selectors.components.ConfigEditor.defaultTable.input} |
133 |
| - data-testid={selectors.components.ConfigEditor.defaultTable.wrapper} |
134 |
| - labelWidth={11} |
135 |
| - className="width-12" |
136 |
| - /> |
137 |
| - </EditorField> |
138 |
| - <EditorField label="Measure" tooltip="Use macro $__measure to reference the selected measure"> |
139 |
| - <ResourceSelector |
140 |
| - id="measure" |
141 |
| - onChange={onChangeSelector('measure')} |
142 |
| - resources={measures} |
143 |
| - value={measure || null} |
144 |
| - tooltip="Use the selected column with the $__measure macro" |
145 |
| - label={selectors.components.ConfigEditor.defaultMeasure.input} |
146 |
| - data-testid={selectors.components.ConfigEditor.defaultMeasure.wrapper} |
147 |
| - labelWidth={11} |
| 109 | + <> |
| 110 | + {props?.app !== 'explore' && ( |
| 111 | + <QueryEditorHeader<DataSource, TimestreamQuery, TimestreamOptions> |
| 112 | + {...props} |
| 113 | + enableRunButton={!!props.query.rawQuery} |
| 114 | + /> |
| 115 | + )} |
| 116 | + <EditorRows> |
| 117 | + <EditorRow> |
| 118 | + <EditorFieldGroup> |
| 119 | + <EditorField label="Database" tooltip="Use macro $__database to reference the selected database"> |
| 120 | + <ResourceSelector |
| 121 | + id="database" |
| 122 | + onChange={onChangeSelector('database')} |
| 123 | + resources={databases} |
| 124 | + value={database || null} |
| 125 | + tooltip="Use the selected schema with the $__database macro" |
| 126 | + label={selectors.components.ConfigEditor.defaultDatabase.input} |
| 127 | + data-testid={selectors.components.ConfigEditor.defaultDatabase.wrapper} |
| 128 | + labelWidth={11} |
| 129 | + className="width-12" |
| 130 | + /> |
| 131 | + </EditorField> |
| 132 | + <EditorField label="Table" tooltip="Use macro $__table to reference the selected table"> |
| 133 | + <ResourceSelector |
| 134 | + id="table" |
| 135 | + onChange={onChangeSelector('table')} |
| 136 | + resources={tables} |
| 137 | + value={table || null} |
| 138 | + tooltip="Use the selected table with the $__table macro" |
| 139 | + label={selectors.components.ConfigEditor.defaultTable.input} |
| 140 | + data-testid={selectors.components.ConfigEditor.defaultTable.wrapper} |
| 141 | + labelWidth={11} |
| 142 | + className="width-12" |
| 143 | + /> |
| 144 | + </EditorField> |
| 145 | + <EditorField label="Measure" tooltip="Use macro $__measure to reference the selected measure"> |
| 146 | + <ResourceSelector |
| 147 | + id="measure" |
| 148 | + onChange={onChangeSelector('measure')} |
| 149 | + resources={measures} |
| 150 | + value={measure || null} |
| 151 | + tooltip="Use the selected column with the $__measure macro" |
| 152 | + label={selectors.components.ConfigEditor.defaultMeasure.input} |
| 153 | + data-testid={selectors.components.ConfigEditor.defaultMeasure.wrapper} |
| 154 | + labelWidth={11} |
| 155 | + className="width-12" |
| 156 | + /> |
| 157 | + </EditorField> |
| 158 | + </EditorFieldGroup> |
| 159 | + </EditorRow> |
| 160 | + <EditorRow> |
| 161 | + <EditorFieldGroup> |
| 162 | + <EditorField label="Wait for all queries"> |
| 163 | + <Switch |
| 164 | + id={`${props.query.refId}-wait-for-all-queries`} |
| 165 | + onChange={onWaitForChange} |
| 166 | + value={query.waitForResult} |
| 167 | + /> |
| 168 | + </EditorField> |
| 169 | + </EditorFieldGroup> |
| 170 | + <EditorFieldGroup> |
| 171 | + <EditorField |
| 172 | + label="Format as" |
| 173 | + tooltipInteractive |
| 174 | + tooltip={ |
| 175 | + <> |
| 176 | + { |
| 177 | + 'Timeseries queries must have times in ascending order, which can be done by adding "ORDER BY <time field> ASC" to the query. ' |
| 178 | + } |
| 179 | + <a |
| 180 | + href="https://docs.aws.amazon.com/timestream/latest/developerguide/supported-sql-constructs.SELECT.html" |
| 181 | + target="_blank" |
| 182 | + rel="noopener noreferrer" |
| 183 | + > |
| 184 | + See the AWS Docs for more details. |
| 185 | + </a> |
| 186 | + </> |
| 187 | + } |
| 188 | + > |
| 189 | + <Select |
| 190 | + inputId="format-as" |
| 191 | + options={SelectableFormatOptions} |
| 192 | + value={props.query.format || FormatOptions.Table} |
| 193 | + onChange={onChangeFormat} |
| 194 | + className="width-11" |
| 195 | + menuShouldPortal={true} |
| 196 | + /> |
| 197 | + </EditorField> |
| 198 | + </EditorFieldGroup> |
| 199 | + </EditorRow> |
| 200 | + <EditorRow> |
| 201 | + <EditorField label="Sample queries" tooltip="Selecting a sample will modify the current query"> |
| 202 | + <Select |
| 203 | + aria-label={'Query'} |
| 204 | + inputId={`${props.query.refId}-sample-query`} |
| 205 | + options={sampleQueries} |
| 206 | + onChange={(e: SelectableValue) => onQueryChange(e.value || '')} |
148 | 207 | className="width-12"
|
149 | 208 | />
|
150 | 209 | </EditorField>
|
151 |
| - </EditorFieldGroup> |
152 |
| - </EditorRow> |
153 |
| - <EditorRow> |
154 |
| - <EditorFieldGroup> |
155 |
| - <EditorField label="Wait for all queries"> |
156 |
| - <Switch |
157 |
| - id={`${props.query.refId}-wait-for-all-queries`} |
158 |
| - onChange={onWaitForChange} |
159 |
| - value={query.waitForResult} |
| 210 | + </EditorRow> |
| 211 | + <EditorRow> |
| 212 | + <div className={styles.sqlEditor}> |
| 213 | + <SQLEditor |
| 214 | + query={query} |
| 215 | + onRunQuery={props.onRunQuery} |
| 216 | + onChange={props.onChange} |
| 217 | + datasource={props.datasource} |
160 | 218 | />
|
161 |
| - </EditorField> |
162 |
| - </EditorFieldGroup> |
163 |
| - <EditorFieldGroup> |
164 |
| - <EditorField |
165 |
| - label="Format as" |
166 |
| - tooltipInteractive |
167 |
| - tooltip={ |
168 |
| - <> |
169 |
| - { |
170 |
| - 'Timeseries queries must have times in ascending order, which can be done by adding "ORDER BY <time field> ASC" to the query. ' |
171 |
| - } |
172 |
| - <a |
173 |
| - href="https://docs.aws.amazon.com/timestream/latest/developerguide/supported-sql-constructs.SELECT.html" |
174 |
| - target="_blank" |
175 |
| - rel="noopener noreferrer" |
176 |
| - > |
177 |
| - See the AWS Docs for more details. |
178 |
| - </a> |
179 |
| - </> |
180 |
| - } |
181 |
| - > |
182 |
| - <Select |
183 |
| - inputId="format-as" |
184 |
| - options={SelectableFormatOptions} |
185 |
| - value={props.query.format || FormatOptions.Table} |
186 |
| - onChange={onChangeFormat} |
187 |
| - className="width-11" |
188 |
| - menuShouldPortal={true} |
189 |
| - /> |
190 |
| - </EditorField> |
191 |
| - </EditorFieldGroup> |
192 |
| - </EditorRow> |
193 |
| - <EditorRow> |
194 |
| - <EditorField label="Sample queries" tooltip="Selecting a sample will modify the current query"> |
195 |
| - <Select |
196 |
| - aria-label={'Query'} |
197 |
| - inputId={`${props.query.refId}-sample-query`} |
198 |
| - options={sampleQueries} |
199 |
| - onChange={(e: SelectableValue) => onQueryChange(e.value || '')} |
200 |
| - className="width-12" |
201 |
| - /> |
202 |
| - </EditorField> |
203 |
| - </EditorRow> |
204 |
| - <EditorRow> |
205 |
| - <div className={styles.sqlEditor}> |
206 |
| - <SQLEditor |
207 |
| - query={query} |
208 |
| - onRunQuery={props.onRunQuery} |
209 |
| - onChange={props.onChange} |
210 |
| - datasource={props.datasource} |
211 |
| - /> |
212 |
| - </div> |
213 |
| - </EditorRow> |
214 |
| - </EditorRows> |
| 219 | + </div> |
| 220 | + </EditorRow> |
| 221 | + </EditorRows> |
| 222 | + </> |
215 | 223 | );
|
216 | 224 | }
|
217 | 225 | const getStyles = () => ({
|
|
0 commit comments