示例#1
0
 /**
  * Calculate by trackdata
  * @param \Runalyze\Model\Trackdata\Entity $trackdata
  */
 public function calculateByTrackdata(Trackdata\Entity $trackdata)
 {
     if (!$trackdata->has(Trackdata\Entity::HEARTRATE)) {
         return;
     }
     return $this->calculateByHeartrate(new TimeSeries($trackdata->get(Trackdata\Entity::HEARTRATE), $trackdata->get(Trackdata\Entity::TIME)));
 }
 /**
  * Collect data
  */
 protected function collectData()
 {
     $data = $this->Trackdata->get($this->IndexKey);
     $time = $this->Trackdata->get(Trackdata\Entity::TIME);
     $rawdata = array();
     foreach (array_merge($this->SumDifferencesKeys, $this->AvgValuesKeys) as $key) {
         $rawdata[$key] = $this->Trackdata->get($key);
     }
     foreach ($data as $i => $val) {
         if (!isset($this->Data[$val])) {
             $this->Data[$val] = array();
             foreach (array_merge($this->SumDifferencesKeys, $this->AvgValuesKeys) as $key) {
                 $this->Data[$val][$key] = 0;
             }
         }
         foreach ($this->SumDifferencesKeys as $key) {
             $prev = $i == 0 ? 0 : $rawdata[$key][$i - 1];
             $this->Data[$val][$key] += $rawdata[$key][$i] - $prev;
         }
         $timeDiff = $i == 0 ? $time[0] : $time[$i] - $time[$i - 1];
         foreach ($this->AvgValuesKeys as $key) {
             $this->Data[$val][$key] += $rawdata[$key][$i] * $timeDiff;
         }
     }
     $this->calculateAverages();
 }
示例#3
0
 /**
  * @param enum $trackdataKey
  * @param enum $activityKey
  */
 protected function removeFromActivityIfValueIsEqualToAverage($trackdataKey, $activityKey)
 {
     // TODO: this does not use a filter for low values as ParserAbstractSingle does
     $dataArray = $this->Trackdata->get($trackdataKey);
     $dataAverage = round(array_sum($dataArray) / count($dataArray));
     if ($this->Activity->get($activityKey) == $dataAverage) {
         $this->Activity->set($activityKey, '');
     }
 }
示例#4
0
 /**
  * Init data
  * @param \Runalyze\Model\Trackdata\Entity $trackdata
  * @param string $key
  */
 protected function fillGaps(Trackdata $trackdata, $key)
 {
     $data = $trackdata->get($key);
     $last = $data[0];
     foreach ($data as &$val) {
         if ($val == 0) {
             $val = $last;
         }
         $last = $val;
     }
     $trackdata->set($key, $data);
 }