DataBar.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. namespace UCore\DcatAdmin\Metrics\Examples;
  3. use Dcat\Admin\Admin;
  4. use Dcat\Admin\Support\JavaScript;
  5. use Dcat\Admin\Widgets\Metrics\RadialBar;
  6. /**
  7. * 横向 条形卡片
  8. *
  9. */
  10. class DataBar extends \Dcat\Admin\Widgets\Metrics\RadialBar
  11. {
  12. /**
  13. * @var array
  14. */
  15. protected $options = [
  16. 'icon' => null,
  17. 'title' => null,
  18. 'header' => null,
  19. 'content' => null,
  20. 'footer' => null,
  21. 'dropdown' => [],
  22. ];
  23. /**
  24. * 卡片高度.
  25. *
  26. * @var int
  27. */
  28. protected $height = 190;
  29. /**
  30. * 图表高度.
  31. *
  32. * @var int
  33. */
  34. protected $chartHeight = 140;
  35. /**
  36. * 内容宽度.
  37. *
  38. * @var array
  39. */
  40. protected $contentWidth = [ 5, 7 ];
  41. /**
  42. * 图表上间距.
  43. *
  44. * @var int
  45. */
  46. protected $chartMarginTop = 0;
  47. /**
  48. * 图表下间距.
  49. *
  50. * @var int
  51. */
  52. protected $chartMarginBottom = -20;
  53. /**
  54. * 图表默认配置.
  55. *
  56. * @return array
  57. */
  58. protected function defaultChartOptions()
  59. {
  60. return [
  61. 'chart' => [
  62. 'height' => 150,
  63. 'type' => 'bar',
  64. ],
  65. 'series' => [
  66. ],
  67. 'xaxis' => [
  68. ],
  69. 'plotOptions' => [
  70. 'bar' => [
  71. 'horizontal' => true
  72. ]
  73. ]
  74. ];
  75. }
  76. /**
  77. * 设置图表数据.
  78. *
  79. * @param array $data 键值对
  80. *
  81. * @return $this
  82. */
  83. public function withChart(array $data)
  84. {
  85. $cData = [
  86. 'series' => [
  87. [
  88. 'data' => array_values($data)
  89. ]
  90. ],
  91. 'xaxis' => [
  92. 'categories' => array_keys($data)
  93. ],
  94. ];
  95. return $this->chart($cData);
  96. }
  97. /**
  98. * 卡片内容.
  99. *
  100. * @param int $finished
  101. * @param int $pending
  102. * @param int $rejected
  103. *
  104. * @return $this
  105. */
  106. public function withContent($count, $in, $out)
  107. {
  108. return $this->content(
  109. <<<HTML
  110. <div class="col-12 d-flex flex-column flex-wrap text-center" style="max-width: 220px">
  111. <div class="chart-info d-flex justify-content-between mb-1 mt-2" >
  112. <div class="series-info d-flex align-items-center">
  113. <i class="fa fa-circle-o text-bold-700 text-primary"></i>
  114. <span class="text-bold-600 ml-50">总</span>
  115. </div>
  116. <div class="product-result">
  117. <span>{$count}</span>
  118. </div>
  119. </div>
  120. <div class="chart-info d-flex justify-content-between mb-1">
  121. <div class="series-info d-flex align-items-center">
  122. <i class="fa fa-circle-o text-bold-700 text-warning"></i>
  123. <span class="text-bold-600 ml-50">总转入</span>
  124. </div>
  125. <div class="product-result">
  126. <span>{$in}</span>
  127. </div>
  128. </div>
  129. <div class="chart-info d-flex justify-content-between mb-1">
  130. <div class="series-info d-flex align-items-center">
  131. <i class="fa fa-circle-o text-bold-700 text-danger"></i>
  132. <span class="text-bold-600 ml-50">总转出</span>
  133. </div>
  134. <div class="product-result">
  135. <span>{$out}</span>
  136. </div>
  137. </div>
  138. </div>
  139. HTML
  140. );
  141. }
  142. }