Skip to content

Commit 5941bf1

Browse files
authored
Merge pull request #119 from questdb/feat/min-time-interval
add a field to plugin config editor to set default min time interval
2 parents 1fc960e + a341519 commit 5941bf1

File tree

5 files changed

+27
-0
lines changed

5 files changed

+27
-0
lines changed

pkg/plugin/settings.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,5 +172,11 @@ func LoadSettings(config backend.DataSourceInstanceSettings) (settings Settings,
172172
}
173173
}
174174

175+
if jsonData["timeInterval"] != nil {
176+
if timeInterval, ok := jsonData["timeInterval"].(string); ok {
177+
settings.TimeInterval = timeInterval
178+
}
179+
}
180+
175181
return settings, settings.isValid()
176182
}

src/data/QuestDbDatasource.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,13 @@ export class Datasource extends DataSourceWithBackend<QuestDBQuery, QuestDBConfi
2424
settings: DataSourceInstanceSettings<QuestDBConfig>;
2525
adHocFilter: AdHocFilter;
2626
skipAdHocFilter = false; // don't apply adhoc filters to the query
27+
interval?: string;
2728

2829
constructor(instanceSettings: DataSourceInstanceSettings<QuestDBConfig>) {
2930
super(instanceSettings);
3031
this.settings = instanceSettings;
3132
this.adHocFilter = new AdHocFilter();
33+
this.interval = instanceSettings.jsonData?.timeInterval;
3234
}
3335

3436
async metricFindQuery(query: QuestDBQuery | string, options: any) {

src/selectors.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@ export const Components = {
9494
tooltip:
9595
'The maximum amount of time (in seconds) a connection may be reused. If set to 0, connections are reused forever.',
9696
},
97+
MinInterval: {
98+
label: 'Min time interval',
99+
tooltip:
100+
'A lower limit for the auto-calculated interval used by $__sampleByInterval macro. Recommended to be set to write frequency, for example 1s if your data is written every second. Valid time identifiers are: ms, s, m, h, d',
101+
},
97102
},
98103
QueryEditor: {
99104
CodeEditor: {

src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export interface QuestDBConfig extends DataSourceJsonData {
2929
maxOpenConnections?: number;
3030
maxIdleConnections?: number;
3131
maxConnectionLifetime?: number;
32+
timeInterval?: string;
3233

3334
tlsMode?: PostgresTLSModes;
3435
tlsConfigurationMethod?: PostgresTLSMethods;

src/views/QuestDBConfigEditor.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,19 @@ export const ConfigEditor: React.FC<Props> = (props) => {
262262
type="number"
263263
/>
264264
</Field>
265+
<Field
266+
label={Components.ConfigEditor.MinInterval.label}
267+
description={Components.ConfigEditor.MinInterval.tooltip}
268+
>
269+
<Input
270+
name="timeInterval"
271+
width={40}
272+
value={jsonData.timeInterval || ''}
273+
onChange={onUpdateDatasourceJsonDataOption(props, 'timeInterval')}
274+
label={Components.ConfigEditor.MinInterval.label}
275+
aria-label={Components.ConfigEditor.MinInterval.label}
276+
/>
277+
</Field>
265278
</ConfigSection>
266279

267280
<Divider />

0 commit comments

Comments
 (0)