v1.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. namespace zin;
  3. require_once dirname(__DIR__) . DS . 'sqlbuilderpicker' . DS . 'v1.php';
  4. require_once dirname(__DIR__) . DS . 'btn' . DS . 'v1.php';
  5. require_once dirname(__DIR__) . DS . 'formgroup' . DS . 'v1.php';
  6. class joinCondition extends wg
  7. {
  8. /**
  9. * @var mixed[]
  10. */
  11. protected static $defineProps = array(
  12. 'index?: int',
  13. 'name?: string',
  14. 'values?: array',
  15. 'tables?: array',
  16. 'fieldAList?: array',
  17. 'fieldBList?: array',
  18. 'columnAError?: bool=false',
  19. 'fieldAError?: bool=false',
  20. 'fieldBError?: bool=false',
  21. 'onChange?: function',
  22. 'onAdd?: function',
  23. 'onRemove?: function'
  24. );
  25. protected function buildColumnA()
  26. {
  27. global $lang;
  28. list($name, $items, $values, $onChange, $error) = $this->prop(array('name', 'tables', 'values', 'onChange', 'columnAError'));
  29. return sqlBuilderPicker
  30. (
  31. set::name("{$name}_table"),
  32. set::label($lang->bi->joinCondition),
  33. set::items($items),
  34. set::value($values[0]),
  35. set::placeholder($lang->bi->selectTableTip),
  36. set::width('50'),
  37. set::error($error),
  38. set::onChange($onChange)
  39. );
  40. }
  41. protected function buildFieldA()
  42. {
  43. global $lang;
  44. list($name, $items, $values, $onChange, $error) = $this->prop(array('name', 'fieldAList', 'values', 'onChange', 'fieldAError'));
  45. return sqlBuilderPicker
  46. (
  47. set::name("{$name}_fieldA"),
  48. set::label($lang->bi->of),
  49. set::items($items),
  50. set::value($values[1]),
  51. set::placeholder($lang->bi->selectFieldTip),
  52. set::labelWidth('40px'),
  53. set::width('40'),
  54. set::error($error),
  55. set::onChange($onChange)
  56. );
  57. }
  58. protected function buildFieldB()
  59. {
  60. global $lang;
  61. list($name, $tables, $items, $values, $onChange, $error) = $this->prop(array('name', 'tables', 'fieldBList', 'values', 'onChange', 'fieldBError'));
  62. $columnB = \zget($tables, $values[3]);
  63. return sqlBuilderPicker
  64. (
  65. set::name("{$name}_fieldB"),
  66. set::label(sprintf($lang->bi->joinTable, $columnB)),
  67. set::items($items),
  68. set::value($values[4]),
  69. set::placeholder($lang->bi->selectFieldTip),
  70. set::labelWidth('120px'),
  71. set::width('60'),
  72. set::error($error),
  73. set::onChange($onChange)
  74. );
  75. }
  76. protected function build()
  77. {
  78. list($index, $onAdd, $onRemove) = $this->prop(array('index', 'onAdd', 'onRemove'));
  79. return formGroup
  80. (
  81. $this->buildColumnA(),
  82. $this->buildFieldA(),
  83. span
  84. (
  85. setClass('mx-4 leading-8'),
  86. '='
  87. ),
  88. $this->buildFieldB(),
  89. formGroup
  90. (
  91. btn
  92. (
  93. setClass('add-row-join-table'),
  94. set('data-index', $index),
  95. set::type('ghost'),
  96. set::icon('plus'),
  97. on::click()->do($onAdd)
  98. ),
  99. btn
  100. (
  101. setClass('remove-row-join-table'),
  102. set('data-index', $index),
  103. set::type('ghost'),
  104. set::icon('minus'),
  105. on::click()->do($onRemove)
  106. )
  107. )
  108. );
  109. }
  110. }