Example #1
0
 /**
  * Tasks to run after update
  */
 protected function afterUpdate()
 {
     if (null !== $this->NewActivity) {
         $this->updateEquipment(array_diff($this->OtherIDsNew, $this->OtherIDsOld), $this->NewActivity->distance(), $this->NewActivity->duration());
     }
     if (null !== $this->NewActivity && null !== $this->OldActivity) {
         $this->updateEquipment(array_intersect($this->OtherIDsNew, $this->OtherIDsOld), $this->NewActivity->distance() - $this->OldActivity->distance(), $this->NewActivity->duration() - $this->OldActivity->duration());
     }
 }
Example #2
0
 /**
  * Get gradient
  * @return string gradient in percent with percent sign
  */
 public function gradientInPercent()
 {
     if ($this->Activity->distance() == 0) {
         return '-';
     }
     return round($this->Activity->elevation() / $this->Activity->distance() / 10, 2) . ' %';
 }
Example #3
0
 /**
  * @return string
  */
 public function distance()
 {
     if ($this->Activity->distance() > 0) {
         return $this->Dataview->distance();
     }
     return '';
 }
Example #4
0
 /**
  * Calculate for activity object
  * 
  * This method does not lookup trackdata of the activity!
  * If you want an exact intensity value, use `calculateByTrackdata(...)`
  * 
  * @param \Runalyze\Model\Activity\Entity $activity
  * @return int
  */
 public function calculateByActivity(Activity\Entity $activity)
 {
     if ($activity->hrAvg() > 0) {
         return $this->calculateByHeartrateAverage($activity->hrAvg(), $activity->duration());
     }
     return $this->calculateByPace($activity->distance(), $activity->duration());
 }
Example #5
0
 /**
  * Calculate stride length for activity
  * Use this method if trackdata is not available
  * @param \Runalyze\Model\Activity\Entity $activity
  * @return int [cm]
  */
 public static function forActivity(Activity\Entity $activity)
 {
     if ($activity->cadence() > 0 && $activity->duration() > 0) {
         return round($activity->distance() * 1000 * 100 / ($activity->cadence() * 2 / 60 * $activity->duration()));
     }
     return 0;
 }
Example #6
0
 /**
  * Prognosis time by shape in seconds
  * @return int
  */
 public function prognosisByShapeInSeconds()
 {
     $Prognosis = new Daniels();
     $Prognosis->adjustVDOT(false);
     $Prognosis->setVDOT($this->Shape);
     return $Prognosis->inSeconds($this->Activity->distance());
 }
Example #7
0
 /**
  * Calculate JD intensity
  * @return int
  */
 public function calculateJDintensity()
 {
     JD\Intensity::setVDOTshape(Configuration::Data()->vdot());
     JD\Intensity::setHRmax(Configuration::Data()->HRmax());
     $Intensity = new JD\Intensity();
     if ($this->knowsTrackdata() && $this->Trackdata->has(Model\Trackdata\Entity::HEARTRATE) && $this->Trackdata->has(Model\Trackdata\Entity::TIME)) {
         return $Intensity->calculateByHeartrate(new TimeSeries($this->Trackdata->heartRate(), $this->Trackdata->time()));
     } elseif ($this->Activity->hrAvg() > 0) {
         return $Intensity->calculateByHeartrateAverage($this->Activity->hrAvg(), $this->Activity->duration());
     } else {
         return $Intensity->calculateByPace($this->Activity->distance(), $this->Activity->duration());
     }
 }