| @@ -4,7 +4,7 @@ | ||
| 4 | 4 | <?php if (count($v) === 2): // Isolated date.?> | 
| 5 | 5 | <div class='bar bar-date bar<?= $k ?>' style='left:<?= $v[0] . ((int)$v[0] !== 0 ? '%' : '') ?>;' | 
| 6 | 6 | data-title='<?= $v[1] ?>'></div> | 
| 7 | - <?php else: ?> | |
| 7 | + <?php else : ?> | |
| 8 | 8 | <div class='bar bar-intv bar<?= $k ?> <?= $v[2] ?> <?= strpos($v[5], '*') ? 'striped' : '' ?>' | 
| 9 | 9 | style='left:<?= $v[0] . ((int)$v[0] !== 0 ? '%' : '') ?>;right:<?= $v[1] . ((int)$v[1] !== 0 ? '%' : '') ?>' | 
| 10 | 10 | data-title="<?= $v[3] . ' ➔ ' . $v[4] . (isset($v[5]) ? ' : ' . $v[5] : '') ?>"> | 
| @@ -4,11 +4,14 @@ | ||
| 4 | 4 | <?php if (count($v) === 2): // Isolated date.?> | 
| 5 | 5 | <div class='bar bar-date bar<?= $k ?>' style='left:<?= $v[0] . ((int)$v[0] !== 0 ? '%' : '') ?>;' | 
| 6 | 6 | data-title='<?= $v[1] ?>'></div> | 
| 7 | - <?php else: ?> | |
| 7 | +        <?php else { | |
| 8 | + : ?> | |
| 8 | 9 | <div class='bar bar-intv bar<?= $k ?> <?= $v[2] ?> <?= strpos($v[5], '*') ? 'striped' : '' ?>' | 
| 9 | 10 | style='left:<?= $v[0] . ((int)$v[0] !== 0 ? '%' : '') ?>;right:<?= $v[1] . ((int)$v[1] !== 0 ? '%' : '') ?>' | 
| 10 | 11 | data-title="<?= $v[3] . ' ➔ ' . $v[4] . (isset($v[5]) ? ' : ' . $v[5] : '') ?>"> | 
| 11 | 12 | </div> | 
| 12 | - <?php endif; ?> | |
| 13 | + <?php endif; | |
| 14 | +} | |
| 15 | +?> | |
| 13 | 16 | <?php endforeach; ?> | 
| 14 | 17 | </div> | 
| 15 | 18 | \ No newline at end of file | 
| @@ -42,10 +42,10 @@ | ||
| 42 | 42 |      { | 
| 43 | 43 | $intvg = new IntervalGraph(); | 
| 44 | 44 | $intvg->getFlattener() | 
| 45 | -            ->setSubstractStep(static function (DateTime $bound) { | |
| 45 | +            ->setSubstractStep(static function(DateTime $bound) { | |
| 46 | 46 |                  return (clone $bound)->sub(new DateInterval('PT1S')); | 
| 47 | 47 | }) | 
| 48 | -            ->setAddStep(static function (DateTime $bound) { | |
| 48 | +            ->setAddStep(static function(DateTime $bound) { | |
| 49 | 49 |                  return (clone $bound)->add(new DateInterval('PT1S')); | 
| 50 | 50 | }); | 
| 51 | 51 |          if (isset($intervals)) { | 
| @@ -58,23 +58,23 @@ discard block | ||
| 58 | 58 | $this->setIntervals($intervals); | 
| 59 | 59 | } | 
| 60 | 60 | |
| 61 | -        $this->boundToNumeric = static function (DateTime $bound) { | |
| 61 | +        $this->boundToNumeric = static function(DateTime $bound) { | |
| 62 | 62 | return $bound->getTimestamp(); | 
| 63 | 63 | }; | 
| 64 | 64 | |
| 65 | -        $this->boundToString = static function (DateTime $bound) { | |
| 65 | +        $this->boundToString = static function(DateTime $bound) { | |
| 66 | 66 |              return $bound->format('Y-m-d'); | 
| 67 | 67 | }; | 
| 68 | 68 | |
| 69 | -        $this->valueToNumeric = static function ($v) { | |
| 69 | +        $this->valueToNumeric = static function($v) { | |
| 70 | 70 | return $v === null ? null : (int)($v * 100); | 
| 71 | 71 | }; | 
| 72 | 72 | |
| 73 | -        $this->valueToString = static function ($v) { | |
| 73 | +        $this->valueToString = static function($v) { | |
| 74 | 74 | return $v === null ? null : ($v * 100 . '%'); | 
| 75 | 75 | }; | 
| 76 | 76 | |
| 77 | -        $this->aggregateFunction = static function ($a, $b) { | |
| 77 | +        $this->aggregateFunction = static function($a, $b) { | |
| 78 | 78 |              if ($a === null && $b === null) { | 
| 79 | 79 | return null; | 
| 80 | 80 | } | 
| @@ -247,7 +247,7 @@ discard block | ||
| 247 | 247 | } | 
| 248 | 248 | |
| 249 | 249 | // Order by low bound. | 
| 250 | -        uasort($numVals, static function (array $i1, array $i2) { | |
| 250 | +        uasort($numVals, static function(array $i1, array $i2) { | |
| 251 | 251 | return ($i1[0] < $i2[0]) ? -1 : 1; | 
| 252 | 252 | }); | 
| 253 | 253 | |
| @@ -263,7 +263,7 @@ discard block | ||
| 263 | 263 | } | 
| 264 | 264 | |
| 265 | 265 | // Order by high bound. | 
| 266 | -        uasort($numVals, static function (array $i1, array $i2) { | |
| 266 | +        uasort($numVals, static function(array $i1, array $i2) { | |
| 267 | 267 | return ($i1[1] < $i2[1]) ? -1 : 1; | 
| 268 | 268 | }); | 
| 269 | 269 | |
| @@ -306,7 +306,7 @@ discard block | ||
| 306 | 306 | !empty($originalValues) ? $this->palette->getColor($colval) : 50, // Interval color | 
| 307 | 307 | ($this->boundToString)($lowBound), // Interval start string value | 
| 308 | 308 | ($this->boundToString)($highBound), // Interval end string value | 
| 309 | - !empty($originalValues) ? $strval : null,// Interval string value | |
| 309 | + !empty($originalValues) ? $strval : null, // Interval string value | |
| 310 | 310 | ]; | 
| 311 | 311 | } | 
| 312 | 312 | } | 
| @@ -314,7 +314,7 @@ discard block | ||
| 314 | 314 | // Put discrete values at the end and reset indices. | 
| 315 | 315 | // Reseting indices ensures the processed values are | 
| 316 | 316 | // serialized as correctly ordered JSON arrays. | 
| 317 | -        usort($numVals, static function ($i) { | |
| 317 | +        usort($numVals, static function($i) { | |
| 318 | 318 | return count($i) === 2 ? 1 : -1; | 
| 319 | 319 | }); | 
| 320 | 320 | |
| @@ -336,7 +336,7 @@ discard block | ||
| 336 | 336 | $adjacentIntervals = $this->flattener->calcAdjacentIntervals($signedBounds); | 
| 337 | 337 | |
| 338 | 338 | // Remove empty interval generated when two or more intervals share a common bound. | 
| 339 | -        $adjacentIntervals = array_values(array_filter($adjacentIntervals, static function ($i) { | |
| 339 | +        $adjacentIntervals = array_values(array_filter($adjacentIntervals, static function($i) { | |
| 340 | 340 | // Use weak comparison in case of object typed bounds. | 
| 341 | 341 | return $i[0] != $i[1]; | 
| 342 | 342 | })); | 
| @@ -364,7 +364,7 @@ discard block | ||
| 364 | 364 | */ | 
| 365 | 365 | public static function extractDiscreteValues(array &$intervals): array | 
| 366 | 366 |      { | 
| 367 | -        $discreteValues = array_filter($intervals, static function ($interval) { | |
| 367 | +        $discreteValues = array_filter($intervals, static function($interval) { | |
| 368 | 368 | return $interval[0] === $interval[1]; | 
| 369 | 369 | }); | 
| 370 | 370 | |
| @@ -401,7 +401,7 @@ discard block | ||
| 401 | 401 | $bounds[] = [$interval[0], '+', true, $key, $interval[2] ?? null]; | 
| 402 | 402 | } | 
| 403 | 403 | // Order the bounds. | 
| 404 | -        usort($bounds, static function (array $d1, array $d2) { | |
| 404 | +        usort($bounds, static function(array $d1, array $d2) { | |
| 405 | 405 | return ($d1[0] < $d2[0]) ? -1 : 1; | 
| 406 | 406 | }); | 
| 407 | 407 | return $bounds; | 
| @@ -428,7 +428,7 @@ discard block | ||
| 428 | 428 | } | 
| 429 | 429 | |
| 430 | 430 | // Order by high bound. | 
| 431 | -        uasort($numericIntervals, static function (array $i1, array $i2) { | |
| 431 | +        uasort($numericIntervals, static function(array $i1, array $i2) { | |
| 432 | 432 | return ($i1[1] < $i2[1]) ? -1 : 1; | 
| 433 | 433 | }); | 
| 434 | 434 | |
| @@ -457,7 +457,7 @@ discard block | ||
| 457 | 457 | // Put discrete values at the end and reset indices. | 
| 458 | 458 | // Reseting indices ensures the processed values are | 
| 459 | 459 | // serialized as correctly ordered JSON arrays. | 
| 460 | -        usort($numericIntervals, static function ($i) { | |
| 460 | +        usort($numericIntervals, static function($i) { | |
| 461 | 461 | return !is_array($i) ? 1 : -1; | 
| 462 | 462 | }); | 
| 463 | 463 | |
| @@ -39,7 +39,7 @@ discard block | ||
| 39 | 39 | D::intv(6, 9, 2 / 10), | 
| 40 | 40 | ]; | 
| 41 | 41 | |
| 42 | -$longDateFormat = static function (DateTime $bound) { | |
| 42 | +$longDateFormat = static function(DateTime $bound) { | |
| 43 | 43 |      return $bound->format('Y-m-d H:i:s'); | 
| 44 | 44 | }; | 
| 45 | 45 | |
| @@ -50,7 +50,7 @@ discard block | ||
| 50 | 50 | */ | 
| 51 | 51 | |
| 52 | 52 | // An aggregate function for arrays representing fractions with the same denominator. | 
| 53 | -$agg = static function ($a, $b) { | |
| 53 | +$agg = static function($a, $b) { | |
| 54 | 54 |      if ($a === null && $b === null) { | 
| 55 | 55 | return null; | 
| 56 | 56 | } | 
| @@ -58,12 +58,12 @@ discard block | ||
| 58 | 58 | }; | 
| 59 | 59 | |
| 60 | 60 | // A toNumeric function… | 
| 61 | -$toNumeric = static function ($a) { | |
| 61 | +$toNumeric = static function($a) { | |
| 62 | 62 | return $a === null ? null : (int)($a[0] / $a[1] * 100); | 
| 63 | 63 | }; | 
| 64 | 64 | |
| 65 | 65 | // A toString function… | 
| 66 | -$toString = static function ($a) { | |
| 66 | +$toString = static function($a) { | |
| 67 | 67 | return $a === null ? null : ($a[0] . '/' . $a[1]); | 
| 68 | 68 | }; | 
| 69 | 69 | |
| @@ -86,8 +86,8 @@ discard block | ||
| 86 | 86 | /* | 
| 87 | 87 | * TRUNCATED INTERVALS | 
| 88 | 88 | */ | 
| 89 | -$intv1 = (DateTime::createFromFormat('Y-m-d', '2019-01-01'))->add(new DateInterval('PT60H'))->setTime(0,0); | |
| 90 | -$intv2 = (DateTime::createFromFormat('Y-m-d', '2019-01-01'))->add(new DateInterval('PT108H'))->setTime(23,59,59); | |
| 89 | +$intv1 = (DateTime::createFromFormat('Y-m-d', '2019-01-01'))->add(new DateInterval('PT60H'))->setTime(0, 0); | |
| 90 | +$intv2 = (DateTime::createFromFormat('Y-m-d', '2019-01-01'))->add(new DateInterval('PT108H'))->setTime(23, 59, 59); | |
| 91 | 91 |  $intv3 = (clone $intv2)->add(new DateInterval('PT60H')); | 
| 92 | 92 | |
| 93 | 93 | $truncated = ($fractim->setIntervals(Truncator::truncate($fractions, $intv1, $intv2))) | 
| @@ -189,14 +189,14 @@ discard block | ||
| 189 | 189 | <?php | 
| 190 | 190 | |
| 191 | 191 | /* ADDITIONAL INFORMATION */ | 
| 192 | -$toString2 = static function ($a) { | |
| 192 | +$toString2 = static function($a) { | |
| 193 | 193 |      if ($a === null) { | 
| 194 | 194 | return null; | 
| 195 | 195 | } | 
| 196 | 196 | return $a[0] . '/' . $a[1] . ($a[2] ? '*' : ''); | 
| 197 | 197 | }; | 
| 198 | 198 | |
| 199 | -$agg2 = static function ($a, $b) { | |
| 199 | +$agg2 = static function($a, $b) { | |
| 200 | 200 |      if ($a === null && $b === null) { | 
| 201 | 201 | return null; | 
| 202 | 202 | } |