2018-07-15 09:52:32 +02:00
|
|
|
import { SqlPartDef, SqlPart } from 'app/core/components/sql_part/sql_part';
|
2018-01-30 22:57:38 +01:00
|
|
|
|
2019-07-01 11:11:57 +02:00
|
|
|
const index: any[] = [];
|
2018-01-30 22:57:38 +01:00
|
|
|
|
2019-07-01 11:11:57 +02:00
|
|
|
function createPart(part: any): any {
|
2018-08-31 19:02:46 +02:00
|
|
|
const def = index[part.type];
|
2018-01-30 22:57:38 +01:00
|
|
|
if (!def) {
|
2018-07-10 14:45:36 +02:00
|
|
|
return null;
|
2018-01-30 22:57:38 +01:00
|
|
|
}
|
|
|
|
|
|
2018-05-21 11:10:00 +02:00
|
|
|
return new SqlPart(part, def);
|
2018-01-30 22:57:38 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function register(options: any) {
|
2018-05-21 11:10:00 +02:00
|
|
|
index[options.type] = new SqlPartDef(options);
|
2018-01-30 22:57:38 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
register({
|
2018-03-03 20:57:00 +01:00
|
|
|
type: 'column',
|
2018-05-21 12:53:06 +02:00
|
|
|
style: 'label',
|
2018-03-03 20:57:00 +01:00
|
|
|
params: [{ type: 'column', dynamicLookup: true }],
|
2018-01-30 22:57:38 +01:00
|
|
|
defaultParams: ['value'],
|
|
|
|
|
});
|
|
|
|
|
|
2018-06-30 11:11:34 +02:00
|
|
|
register({
|
|
|
|
|
type: 'expression',
|
|
|
|
|
style: 'expression',
|
|
|
|
|
label: 'Expr:',
|
|
|
|
|
params: [
|
|
|
|
|
{ name: 'left', type: 'string', dynamicLookup: true },
|
|
|
|
|
{ name: 'op', type: 'string', dynamicLookup: true },
|
|
|
|
|
{ name: 'right', type: 'string', dynamicLookup: true },
|
|
|
|
|
],
|
|
|
|
|
defaultParams: ['value', '=', 'value'],
|
|
|
|
|
});
|
|
|
|
|
|
2018-07-06 10:38:52 +02:00
|
|
|
register({
|
|
|
|
|
type: 'macro',
|
2018-07-10 10:19:30 +02:00
|
|
|
style: 'label',
|
2018-07-06 10:38:52 +02:00
|
|
|
label: 'Macro:',
|
|
|
|
|
params: [],
|
|
|
|
|
defaultParams: [],
|
|
|
|
|
});
|
|
|
|
|
|
2018-01-30 22:57:38 +01:00
|
|
|
register({
|
2018-03-26 18:34:40 +02:00
|
|
|
type: 'aggregate',
|
2018-05-21 12:53:06 +02:00
|
|
|
style: 'label',
|
2018-07-29 13:30:21 +02:00
|
|
|
params: [
|
|
|
|
|
{
|
|
|
|
|
name: 'name',
|
|
|
|
|
type: 'string',
|
|
|
|
|
options: ['avg', 'count', 'min', 'max', 'sum', 'stddev', 'variance'],
|
|
|
|
|
},
|
|
|
|
|
],
|
2018-03-26 18:34:40 +02:00
|
|
|
defaultParams: ['avg'],
|
2018-01-30 22:57:38 +01:00
|
|
|
});
|
|
|
|
|
|
2018-07-29 13:30:21 +02:00
|
|
|
register({
|
|
|
|
|
type: 'percentile',
|
|
|
|
|
label: 'Aggregate:',
|
|
|
|
|
style: 'label',
|
|
|
|
|
params: [
|
|
|
|
|
{
|
|
|
|
|
name: 'name',
|
|
|
|
|
type: 'string',
|
|
|
|
|
options: ['percentile_cont', 'percentile_disc'],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'fraction',
|
|
|
|
|
type: 'number',
|
|
|
|
|
options: ['0.5', '0.75', '0.9', '0.95', '0.99'],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
defaultParams: ['percentile_cont', '0.95'],
|
|
|
|
|
});
|
|
|
|
|
|
2018-01-30 22:57:38 +01:00
|
|
|
register({
|
|
|
|
|
type: 'alias',
|
2018-05-21 12:53:06 +02:00
|
|
|
style: 'label',
|
2018-01-30 22:57:38 +01:00
|
|
|
params: [{ name: 'name', type: 'string', quote: 'double' }],
|
|
|
|
|
defaultParams: ['alias'],
|
|
|
|
|
});
|
|
|
|
|
|
2018-03-04 10:18:11 +01:00
|
|
|
register({
|
|
|
|
|
type: 'time',
|
2018-05-21 12:53:06 +02:00
|
|
|
style: 'function',
|
2018-05-21 11:44:37 +02:00
|
|
|
label: 'time',
|
2018-03-04 10:18:11 +01:00
|
|
|
params: [
|
|
|
|
|
{
|
|
|
|
|
name: 'interval',
|
|
|
|
|
type: 'interval',
|
|
|
|
|
options: ['$__interval', '1s', '10s', '1m', '5m', '10m', '15m', '1h'],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'fill',
|
|
|
|
|
type: 'string',
|
2018-08-08 12:23:41 +02:00
|
|
|
options: ['none', 'NULL', 'previous', '0'],
|
2018-03-04 10:18:11 +01:00
|
|
|
},
|
|
|
|
|
],
|
2018-06-30 11:11:34 +02:00
|
|
|
defaultParams: ['$__interval', 'none'],
|
2018-03-04 10:18:11 +01:00
|
|
|
});
|
|
|
|
|
|
2018-07-10 21:43:10 +02:00
|
|
|
register({
|
2018-07-28 21:30:08 +02:00
|
|
|
type: 'window',
|
2018-07-10 21:43:10 +02:00
|
|
|
style: 'label',
|
|
|
|
|
params: [
|
|
|
|
|
{
|
|
|
|
|
name: 'function',
|
|
|
|
|
type: 'string',
|
2018-10-31 19:26:18 +01:00
|
|
|
options: ['delta', 'increase', 'rate', 'sum'],
|
2018-07-10 21:43:10 +02:00
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
defaultParams: ['increase'],
|
|
|
|
|
});
|
|
|
|
|
|
2018-08-03 07:44:36 +02:00
|
|
|
register({
|
|
|
|
|
type: 'moving_window',
|
|
|
|
|
style: 'label',
|
|
|
|
|
label: 'Moving Window:',
|
|
|
|
|
params: [
|
|
|
|
|
{
|
|
|
|
|
name: 'function',
|
|
|
|
|
type: 'string',
|
|
|
|
|
options: ['avg'],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'window_size',
|
|
|
|
|
type: 'number',
|
|
|
|
|
options: ['3', '5', '7', '10', '20'],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
defaultParams: ['avg', '5'],
|
|
|
|
|
});
|
|
|
|
|
|
2018-01-30 22:57:38 +01:00
|
|
|
export default {
|
|
|
|
|
create: createPart,
|
|
|
|
|
};
|