|
|
@@ -99,8 +99,28 @@ export class PostgresQueryCtrl extends QueryCtrl {
|
|
|
|
|
|
buildSelectMenu() {
|
|
|
this.selectMenu = [
|
|
|
- { text: 'Aggregate', value: 'aggregate' },
|
|
|
- { text: 'Special', value: 'special' },
|
|
|
+ {
|
|
|
+ text: 'Aggregate Functions',
|
|
|
+ value: 'aggregate',
|
|
|
+ submenu: [
|
|
|
+ { text: 'Average', value: 'avg' },
|
|
|
+ { text: 'Count', value: 'count' },
|
|
|
+ { text: 'Maximum', value: 'max' },
|
|
|
+ { text: 'Minimum', value: 'min' },
|
|
|
+ { text: 'Sum', value: 'sum' },
|
|
|
+ { text: 'Standard deviation', value: 'stddev' },
|
|
|
+ { text: 'Variance', value: 'variance' },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: 'Window Functions',
|
|
|
+ value: 'window',
|
|
|
+ submenu: [
|
|
|
+ { text: 'Increase', value: 'increase' },
|
|
|
+ { text: 'Rate', value: 'rate' },
|
|
|
+ { text: 'Sum', value: 'sum' },
|
|
|
+ ],
|
|
|
+ },
|
|
|
{ text: 'Alias', value: 'alias' },
|
|
|
{ text: 'Column', value: 'column' },
|
|
|
];
|
|
|
@@ -207,8 +227,11 @@ export class PostgresQueryCtrl extends QueryCtrl {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
- addSelectPart(selectParts, item) {
|
|
|
+ addSelectPart(selectParts, item, subItem) {
|
|
|
let partModel = sqlPart.create({ type: item.value });
|
|
|
+ if (subItem) {
|
|
|
+ partModel.params = [subItem.value];
|
|
|
+ }
|
|
|
let addAlias = false;
|
|
|
|
|
|
switch (item.value) {
|
|
|
@@ -223,7 +246,7 @@ export class PostgresQueryCtrl extends QueryCtrl {
|
|
|
if (this.target.group.length === 0) {
|
|
|
this.addGroup('time', '1m');
|
|
|
}
|
|
|
- case 'special':
|
|
|
+ case 'window':
|
|
|
let index = _.findIndex(selectParts, (p: any) => p.def.type === item.value);
|
|
|
if (index !== -1) {
|
|
|
selectParts[index] = partModel;
|