field.formatters.inc 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. /**
  3. * Implements hook_field_formatter_info().
  4. */
  5. function custom_maps_field_formatter_info() {
  6. return array(
  7. 'speed' => array(
  8. 'label' => t('Speed'),
  9. 'field types' => array('number_float'),
  10. ),
  11. 'distance' => array(
  12. 'label' => t('Distance'),
  13. 'field types' => array('number_float'),
  14. ),
  15. 'duration' => array(
  16. 'label' => t('Duration'),
  17. 'field types' => array('number_float'),
  18. ),
  19. 'meters' => array(
  20. 'label' => t('Distance (Meters)'),
  21. 'field types' => array('number_float'),
  22. ),
  23. 'pace' => array(
  24. 'label' => t('Pace'),
  25. 'field types' => array('number_float'),
  26. ),
  27. );
  28. }
  29. /**
  30. * Implements hook_field_formatter_view().
  31. */
  32. function custom_maps_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  33. $element = array(); // Initialize the var
  34. $settings = $display['settings']; // get the settings
  35. // $size = $settings['pic_size']; // The Size setting selected in the settings form
  36. // $tooltip = $settings['tooltip']; // The tool tip assigned in settings
  37. switch ($display['type']) {
  38. case 'speed':
  39. $element[0]['#markup'] = @__number_format($items[0]['value'], 2 ) . ' Km/h';
  40. break;
  41. case 'distance':
  42. $element[0]['#markup'] = @__number_format($items[0]['value'] / 1000, 2 ) . ' Km';
  43. break;
  44. case 'duration':
  45. // $element[0]['#markup'] = format_interval($items[0]['value'] , 3 );
  46. $element[0]['#markup'] = __format_seconds($items[0]['value']);
  47. break;
  48. case 'meters':
  49. $element[0]['#markup'] = intval($items[0]['value']) . ' m';
  50. break;
  51. case 'pace':
  52. $element[0]['#markup'] = @str_replace('00h:', '', gmdate('H\h:i\m:s\s', $items[0]['value'] ) . ' min/km');
  53. break;
  54. }
  55. return $element;
  56. }
  57. function __format_seconds($seconds) {
  58. return @str_replace('00h:', '', gmdate('H\h:i\m:s\s', $seconds ));
  59. }
  60. function __number_format($number, $precision = 2, $separator = '.')
  61. {
  62. $numberParts = explode($separator, $number);
  63. $response = $numberParts[0];
  64. if(count($numberParts)>1){
  65. $response .= $separator;
  66. $response .= substr($numberParts[1], 0, $precision);
  67. }
  68. return $response;
  69. }