sql_part.ts 1.7 KB

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