Totals.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backend\Model\Widget\Grid;
  7. /**
  8. * @api
  9. * @since 100.0.2
  10. */
  11. class Totals extends \Magento\Backend\Model\Widget\Grid\AbstractTotals
  12. {
  13. /**
  14. * Count collection column sum based on column index
  15. *
  16. * @param string $index
  17. * @param \Magento\Framework\Data\Collection $collection
  18. * @return float|int
  19. */
  20. protected function _countSum($index, $collection)
  21. {
  22. $sum = 0;
  23. foreach ($collection as $item) {
  24. if (!$item->hasChildren()) {
  25. $sum += $item[$index];
  26. } else {
  27. $sum += $this->_countSum($index, $item->getChildren());
  28. }
  29. }
  30. return $sum;
  31. }
  32. /**
  33. * Count collection column average based on column index
  34. *
  35. * @param string $index
  36. * @param \Magento\Framework\Data\Collection $collection
  37. * @return float|int
  38. */
  39. protected function _countAverage($index, $collection)
  40. {
  41. $itemsCount = 0;
  42. foreach ($collection as $item) {
  43. if (!$item->hasChildren()) {
  44. $itemsCount += 1;
  45. } else {
  46. $itemsCount += count($item->getChildren());
  47. }
  48. }
  49. return $itemsCount ? $this->_countSum($index, $collection) / $itemsCount : $itemsCount;
  50. }
  51. }