v1.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. namespace zin;
  3. require_once dirname(__DIR__) . DS . 'sqlbuilderpicker' . DS . 'v1.php';
  4. require_once dirname(__DIR__) . DS . 'sqlbuilderinput' . DS . 'v1.php';
  5. class sqlBuilderWhereItem extends wg
  6. {
  7. /**
  8. * @var mixed[]
  9. */
  10. protected static $defineProps = array(
  11. 'index?: string',
  12. 'first?: bool=false',
  13. 'tables?: array',
  14. 'fields?: array',
  15. 'value?: array',
  16. 'onChange?: function',
  17. 'onAdd?: function',
  18. 'onRemove?: function',
  19. 'tableError?:bool=false',
  20. 'fieldError?:bool=false',
  21. 'valueError?:bool=false'
  22. );
  23. protected function buildTable()
  24. {
  25. global $lang;
  26. list($index, $items, $value, $onChange, $error) = $this->prop(array('index', 'tables', 'value', 'onChange', 'tableError'));
  27. $value = $value[0];
  28. return sqlBuilderPicker
  29. (
  30. setClass('ml-4'),
  31. set::name("0_$index"),
  32. set::items($items),
  33. set::value($value),
  34. set::placeholder($lang->bi->selectTableTip),
  35. set::width('48'),
  36. set::onChange($onChange),
  37. set::error($error)
  38. );
  39. }
  40. protected function buildField()
  41. {
  42. global $lang;
  43. list($index, $items, $value, $onChange, $error) = $this->prop(array('index', 'fields', 'value', 'onChange', 'fieldError'));
  44. $value = $value[1];
  45. return sqlBuilderPicker
  46. (
  47. set::name("1_$index"),
  48. set::items($items),
  49. set::value($value),
  50. set::placeholder($lang->bi->selectFieldTip),
  51. set::width('48'),
  52. set::onChange($onChange),
  53. set::error($error)
  54. );
  55. }
  56. protected function buildOperator()
  57. {
  58. global $lang;
  59. list($index, $value, $onChange) = $this->prop(array('index', 'value', 'onChange'));
  60. $value = $value[2];
  61. return sqlBuilderPicker
  62. (
  63. setClass('ml-4'),
  64. set::name("2_$index"),
  65. set::items($lang->bi->whereItemOperatorList),
  66. set::value($value),
  67. set::required(true),
  68. set::width('24'),
  69. set::onChange($onChange)
  70. );
  71. }
  72. protected function buildValue()
  73. {
  74. global $lang;
  75. list($index, $value, $onChange, $error) = $this->prop(array('index', 'value', 'onChange', 'valueError'));
  76. $value = $value[4];
  77. return sqlBuilderInput
  78. (
  79. setClass('ml-4'),
  80. set::name("4_$index"),
  81. set::value($value),
  82. set::placeholder($lang->bi->selectInputTip),
  83. set::width('48'),
  84. set::onChange($onChange),
  85. set::error($error)
  86. );
  87. }
  88. protected function buildConditionOperator()
  89. {
  90. global $lang;
  91. list($index, $value, $onChange, $isFirst) = $this->prop(array('index', 'value', 'onChange', 'first'));
  92. $value = $value[5];
  93. return formGroup
  94. (
  95. set::width('20'),
  96. picker
  97. (
  98. setID("builderPicker_5_$index"),
  99. setClass('builder-picker', array('hidden' => $isFirst)),
  100. set::name("5_$index"),
  101. set::value($value),
  102. set::items($lang->bi->whereOperatorList),
  103. set::required(true),
  104. on::change()->do($onChange)
  105. )
  106. );
  107. }
  108. protected function build()
  109. {
  110. list($index, $onAdd, $onRemove) = $this->prop(array('index', 'onAdd', 'onRemove'));
  111. return formRow
  112. (
  113. $this->buildConditionOperator(),
  114. $this->buildTable(),
  115. $this->buildField(),
  116. $this->buildOperator(),
  117. $this->buildValue(),
  118. formGroup
  119. (
  120. btn
  121. (
  122. setClass('add-where-item'),
  123. set('data-index', $index),
  124. set::type('ghost'),
  125. set::icon('plus'),
  126. on::click()->do($onAdd)
  127. ),
  128. btn
  129. (
  130. setClass('remove-where-item'),
  131. set('data-index', $index),
  132. set::type('ghost'),
  133. set::icon('minus'),
  134. on::click()->do($onRemove)
  135. )
  136. )
  137. );
  138. }
  139. }