index.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. const QueryBuilder = {
  2. }
  3. /**
  4. * Allowed types and their internal representation
  5. * 允许的类型及其内部表示
  6. * @type {object.<string, string>}
  7. * @readonly
  8. * @private
  9. */
  10. QueryBuilder.TYPES = {
  11. 'string': 'string',
  12. 'integer': 'number',
  13. 'double': 'number',
  14. 'number': 'number',
  15. 'date': 'datetime',
  16. 'time': 'datetime',
  17. 'datetime': 'datetime',
  18. 'boolean': 'boolean'
  19. }
  20. /**
  21. * Allowed inputs
  22. * 允许的默认控件类型,如果扩展请custom
  23. * @type {string[]}
  24. * @readonly
  25. * @private
  26. */
  27. QueryBuilder.INPUTS = [
  28. 'text',
  29. 'number',
  30. 'textarea',
  31. 'radio',
  32. 'checkbox',
  33. 'select',
  34. 'date',
  35. 'datetime',
  36. 'custom'
  37. ]
  38. /**
  39. * 操作符
  40. * type:类型
  41. * nb_inputs:有几个输入
  42. * multiple:是否多选
  43. * apply_to :应用
  44. */
  45. QueryBuilder.OPERATORS = {
  46. equal: { type: 'equal', nb_inputs: 1, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] },
  47. not_equal: { type: 'not_equal', nb_inputs: 1, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] },
  48. in: { type: 'in', nb_inputs: 1, multiple: true, apply_to: ['string', 'number', 'datetime'] },
  49. not_in: { type: 'not_in', nb_inputs: 1, multiple: true, apply_to: ['string', 'number', 'datetime'] },
  50. less: { type: 'less', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime'] },
  51. less_or_equal: { type: 'less_or_equal', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime'] },
  52. greater: { type: 'greater', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime'] },
  53. greater_or_equal: { type: 'greater_or_equal', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime'] },
  54. between: { type: 'between', nb_inputs: 2, multiple: false, apply_to: ['number', 'datetime'] },
  55. not_between: { type: 'not_between', nb_inputs: 2, multiple: false, apply_to: ['number', 'datetime'] },
  56. begins_with: { type: 'begins_with', nb_inputs: 1, multiple: false, apply_to: ['string'] },
  57. not_begins_with: { type: 'not_begins_with', nb_inputs: 1, multiple: false, apply_to: ['string'] },
  58. contains: { type: 'contains', nb_inputs: 1, multiple: false, apply_to: ['string'] },
  59. not_contains: { type: 'not_contains', nb_inputs: 1, multiple: false, apply_to: ['string'] },
  60. ends_with: { type: 'ends_with', nb_inputs: 1, multiple: false, apply_to: ['string'] },
  61. not_ends_with: { type: 'not_ends_with', nb_inputs: 1, multiple: false, apply_to: ['string'] },
  62. is_empty: { type: 'is_empty', nb_inputs: 0, multiple: false, apply_to: ['string'] },
  63. is_not_empty: { type: 'is_not_empty', nb_inputs: 0, multiple: false, apply_to: ['string'] },
  64. is_null: { type: 'is_null', nb_inputs: 0, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] },
  65. is_not_null: { type: 'is_not_null', nb_inputs: 0, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] },
  66. find_in_set: { type: 'find_in_set', nb_inputs: 1, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] }
  67. }
  68. QueryBuilder.SOURCES = {
  69. 'fixed': 'fixed',
  70. 'script': 'script',
  71. 'dynamic': 'dynamic'
  72. }
  73. export default QueryBuilder