Skip to content

Commit e9bcef6

Browse files
committed
add a field to plugin config editor to set default min time interval
1 parent db0a3a5 commit e9bcef6

File tree

5 files changed

+29
-0
lines changed

5 files changed

+29
-0
lines changed

pkg/plugin/settings.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ type Settings struct {
2828
MaxOpenConnections int64 `json:"maxOpenConnections,omitempty"`
2929
MaxIdleConnections int64 `json:"maxIdleConnections,omitempty"`
3030
MaxConnectionLifetime int64 `json:"maxConnectionLifetime,omitempty"`
31+
TimeInterval string `json:"timeInterval,omitempty"`
3132

3233
TlsMode string `json:"tlsMode"`
3334
ConfigurationMethod string `json:"tlsConfigurationMethod"`
@@ -183,5 +184,11 @@ func LoadSettings(config backend.DataSourceInstanceSettings) (settings Settings,
183184
}
184185
}
185186

187+
if jsonData["timeInterval"] != nil {
188+
if timeInterval, ok := jsonData["timeInterval"].(string); ok {
189+
settings.TimeInterval = timeInterval
190+
}
191+
}
192+
186193
return settings, settings.isValid()
187194
}

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: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,20 @@ export const ConfigEditor: React.FC<Props> = (props) => {
263263
/>
264264
</Field>
265265

266+
<Field
267+
label={Components.ConfigEditor.MinInterval.label}
268+
description={Components.ConfigEditor.MinInterval.tooltip}
269+
>
270+
<Input
271+
name="timeInterval"
272+
width={40}
273+
value={jsonData.timeInterval || ''}
274+
onChange={onUpdateDatasourceJsonDataOption(props, 'timeInterval')}
275+
label={Components.ConfigEditor.MinInterval.label}
276+
aria-label={Components.ConfigEditor.MinInterval.label}
277+
/>
278+
</Field>
279+
266280
{config.featureToggles['secureSocksDSProxyEnabled'] && gte(config.buildInfo.version, '10.0.0') && (
267281
<Field
268282
label={Components.ConfigEditor.SecureSocksProxy.label}

0 commit comments

Comments
 (0)