sql_part.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { SqlPartDef, SqlPart } from 'app/core/components/sql_part/sql_part';
  2. var index = [];
  3. function createPart(part): any {
  4. var def = index[part.type];
  5. if (!def) {
  6. return null;
  7. }
  8. return new SqlPart(part, def);
  9. }
  10. function register(options: any) {
  11. index[options.type] = new SqlPartDef(options);
  12. }
  13. register({
  14. type: 'column',
  15. style: 'label',
  16. params: [{ type: 'column', dynamicLookup: true }],
  17. defaultParams: ['value'],
  18. });
  19. register({
  20. type: 'expression',
  21. style: 'expression',
  22. label: 'Expr:',
  23. params: [
  24. { name: 'left', type: 'string', dynamicLookup: true },
  25. { name: 'op', type: 'string', dynamicLookup: true },
  26. { name: 'right', type: 'string', dynamicLookup: true },
  27. ],
  28. defaultParams: ['value', '=', 'value'],
  29. });
  30. register({
  31. type: 'macro',
  32. style: 'label',
  33. label: 'Macro:',
  34. params: [],
  35. defaultParams: [],
  36. });
  37. register({
  38. type: 'aggregate',
  39. style: 'label',
  40. params: [{ name: 'name', type: 'string', dynamicLookup: true }],
  41. defaultParams: ['avg'],
  42. });
  43. register({
  44. type: 'alias',
  45. style: 'label',
  46. params: [{ name: 'name', type: 'string', quote: 'double' }],
  47. defaultParams: ['alias'],
  48. });
  49. register({
  50. type: 'time',
  51. style: 'function',
  52. label: 'time',
  53. params: [
  54. {
  55. name: 'interval',
  56. type: 'interval',
  57. options: ['$__interval', '1s', '10s', '1m', '5m', '10m', '15m', '1h'],
  58. },
  59. {
  60. name: 'fill',
  61. type: 'string',
  62. options: ['none', 'NULL', '0'],
  63. },
  64. ],
  65. defaultParams: ['$__interval', 'none'],
  66. });
  67. register({
  68. type: 'special',
  69. style: 'label',
  70. params: [
  71. {
  72. name: 'function',
  73. type: 'string',
  74. options: ['increase', 'rate'],
  75. },
  76. ],
  77. defaultParams: ['increase'],
  78. });
  79. export default {
  80. create: createPart,
  81. };