v1.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace zin;
  3. require_once dirname(__DIR__) . DS . 'panel' . DS . 'v1.php';
  4. class sqlBuilderWhereGroup extends wg
  5. {
  6. /**
  7. * @var mixed[]
  8. */
  9. protected static $defineProps = array(
  10. 'index?: int',
  11. 'operator?: string="and"',
  12. 'onChange?: function',
  13. 'onAdd?: function',
  14. 'onRemove?: function',
  15. 'last?: bool=false'
  16. );
  17. protected function createGroup()
  18. {
  19. global $lang;
  20. list($index, $onAdd, $onRemove) = $this->prop(array('index', 'onAdd', 'onRemove'));
  21. return panel
  22. (
  23. setClass('w-full mb-4'),
  24. set::title(sprintf($lang->bi->whereGroupTitle, $index + 1)),
  25. set::headingClass('relative bg-gray-100'),
  26. set::bodyClass('bg-gray-100 flex gap-y-4 col'),
  27. to::heading
  28. (
  29. div
  30. (
  31. setClass('absolute right-0'),
  32. btn
  33. (
  34. setClass('add-where text-primary'),
  35. set::type('ghost'),
  36. set('data-index', $index),
  37. $lang->bi->addWhereGroup,
  38. on::click()->do($onAdd)
  39. ),
  40. btn
  41. (
  42. setClass('remove-where text-primary'),
  43. set::type('ghost'),
  44. set('data-index', $index),
  45. $lang->bi->removeWhereGroup,
  46. on::click()->do($onRemove)
  47. )
  48. )
  49. ),
  50. $this->children()
  51. );
  52. }
  53. protected function build()
  54. {
  55. global $lang;
  56. list($index, $operator, $isLast, $onChange) = $this->prop(array('index', 'operator', 'last', 'onChange'));
  57. return div
  58. (
  59. setID("whereGroup$index"),
  60. setClass('flex col justify-center items-center'),
  61. $this->createGroup(),
  62. div
  63. (
  64. setClass('w-16 mb-4', array('hidden' => $isLast)),
  65. picker
  66. (
  67. setID("builderPicker_operator_$index"),
  68. setClass('builder-picker'),
  69. set::name("operator_{$index}_"),
  70. set::required(true),
  71. set::items($lang->bi->whereOperatorList),
  72. set::value($operator),
  73. on::change()->do($onChange)
  74. )
  75. )
  76. );
  77. }
  78. }