/** * @param int $duration [optional] * @param float $distance [optional] * @param enum $mode [optional] */ public function __construct($duration = 0, $distance = 0, $mode = self::MODE_ACTIVE) { $this->setDuration($duration); $this->setDistance($distance); $this->setMode($mode); $this->Athlete = Context::Athlete(); }
/** * Set manipulation facotr */ protected function setManipulationFactor() { $this->Factor = 1; $this->HRmax = Configuration::Data()->HRmax(); $this->HRrest = Configuration::Data()->HRrest(); if (\Runalyze\Context::Athlete()->knowsMaximalHeartRate() && !Configuration::General()->heartRateUnit()->isBPM()) { if (\Runalyze\Context::Athlete()->knowsRestingHeartRate() && Configuration::General()->heartRateUnit()->isHRreserve()) { $this->Factor = false; } else { $this->Factor = 100 / Configuration::Data()->HRmax(); } } }
/** * Calculate trimp * @return int */ public function calculateTrimp() { if ($this->knowsTrackdata() && $this->Trackdata->has(Model\Trackdata\Object::HEARTRATE)) { $Collector = new Trimp\DataCollector($this->Trackdata->heartRate(), $this->Trackdata->time()); $data = $Collector->result(); } elseif ($this->Activity->hrAvg() > 0) { $data = array($this->Activity->hrAvg() => $this->Activity->duration()); } else { $Factory = Context::Factory(); if ($this->Activity->typeid() > 0) { $data = array($Factory->type($this->Activity->typeid())->hrAvg() => $this->Activity->duration()); } else { $data = array($Factory->sport($this->Activity->sportid())->avgHR() => $this->Activity->duration()); } } $Athlete = Context::Athlete(); $Calculator = new Trimp\Calculator($Athlete, $data); return round($Calculator->value()); }
/** * Average heart rate * @return \Runalyze\Activity\HeartRate */ public function hrAvg() { return $this->object($this->HRavg, function ($Activity) { return new HeartRate($Activity->hrAvg(), GeneralContext::Athlete()); }); }