/** * Construct context * @var int $activityID * @var in $accountID */ public function __construct($activityID, $accountID) { $Factory = new Factory((int) $accountID); $this->Activity = $Factory->activity((int) $activityID); $this->Trackdata = $Factory->trackdata((int) $activityID); $this->Route = $this->Activity->get(Activity\Object::ROUTEID) ? $Factory->route($this->Activity->get(Activity\Object::ROUTEID)) : null; $this->HRV = $Factory->hrv((int) $activityID); $this->Sport = $Factory->sport($this->Activity->sportid()); $this->Dataview = new Dataview($this->Activity); }
/** * Construct updater * @param \PDO $connection * @param int $accountID * @param \Runalyze\Model\Activity\Object $activity * @param \Runalyze\Model\Factory $factory */ public function __construct(\PDO $connection, $accountID, Object $activity, Model\Factory $factory) { $this->PDO = $connection; $this->AccountID = $accountID; $this->Activity = $activity; $this->Trackdata = $factory->trackdata($activity->id()); $this->OldTrackdata = clone $this->Trackdata; $this->Route = $factory->route($activity->get(Object::ROUTEID)); $this->OldRoute = clone $this->Route; }
/** * Construct updater * @param \PDO $connection * @param int $accountID * @param \Runalyze\Model\Activity\Object $activity * @param \Runalyze\Model\Factory $factory */ public function __construct(\PDO $connection, $accountID, Object $activity, Model\Factory $factory) { $this->PDO = $connection; $this->AccountID = $accountID; $this->Activity = $activity; $this->OldActivity = clone $activity; $this->Trackdata = $factory->trackdata($activity->id()); $this->OldTrackdata = clone $this->Trackdata; $this->Route = $factory->route($activity->get(Object::ROUTEID)); $this->OldRoute = clone $this->Route; $this->ActivityKeysForTrackdataKeys = [Model\Trackdata\Object::HEARTRATE => Model\Activity\Object::HR_AVG, Model\Trackdata\Object::CADENCE => Model\Activity\Object::CADENCE, Model\Trackdata\Object::VERTICAL_OSCILLATION => Model\Activity\Object::VERTICAL_OSCILLATION, Model\Trackdata\Object::GROUNDCONTACT => Model\Activity\Object::GROUNDCONTACT, Model\Trackdata\Object::POWER => Model\Activity\Object::POWER, Model\Trackdata\Object::TEMPERATURE => Model\Activity\Object::TEMPERATURE]; }
/** * Construct context * @var int $activityID * @var int $accountID */ public function __construct($activityID, $accountID) { $Factory = new Factory((int) $accountID); $this->Activity = $Factory->activity((int) $activityID); $this->Trackdata = $Factory->trackdata((int) $activityID); $this->Swimdata = $Factory->swimdata((int) $activityID); $this->Route = $this->Activity->get(Activity\Entity::ROUTEID) ? $Factory->route($this->Activity->get(Activity\Entity::ROUTEID)) : null; $this->HRV = $Factory->hrv((int) $activityID); $this->Sport = $Factory->sport($this->Activity->sportid()); $this->Swimdata->fillDistanceArray($this->Trackdata); $this->Swimdata->fillSwolfArray($this->Trackdata); $this->Dataview = new Dataview($this->Activity); }
public function testIfRouteWillBeDeleted() { $id = $this->insert(array(Object::TIMESTAMP => time()), array(Route\Object::LATITUDES => array(49.6, 49.7, 49.8), Route\Object::LONGITUDES => array(7.6, 7.7, 7.8), Route\Object::ELEVATIONS_CORRECTED => array(200, 250, 200), Route\Object::ELEVATION => 50, Route\Object::ELEVATION_UP => 50, Route\Object::ELEVATION_DOWN => 50), array()); $OldActivity = $this->Factory->activity($id); $RouteID = $OldActivity->get(Object::ROUTEID); $Remover = new DataSeriesRemover($this->PDO, 0, $OldActivity, $this->Factory); $Remover->removeGPSpathFromRoute(); $Remover->removeFromRoute(Route\Object::ELEVATIONS_CORRECTED); $Remover->saveChanges(); $Activity = $this->Factory->activity($id); $Route = $this->Factory->route($RouteID); $this->assertEquals(0, $Activity->get(Object::ROUTEID)); $this->assertTrue($Route->isEmpty()); }
/** * Construct updater * @param \PDO $connection * @param int $accountID * @param \Runalyze\Model\Activity\Entity $activity * @param \Runalyze\Model\Factory $factory */ public function __construct(\PDO $connection, $accountID, Entity $activity, Model\Factory $factory) { $this->PDO = $connection; $this->AccountID = $accountID; $this->Activity = $activity; $this->OldActivity = clone $activity; $this->Trackdata = $factory->trackdata($activity->id()); $this->OldTrackdata = clone $this->Trackdata; $this->Route = $factory->route($activity->get(Entity::ROUTEID)); $this->OldRoute = clone $this->Route; // TODO: What's with STRIDE_LENGTH and VERTICAL_RATIO? // - so far, there are updateStrideLength() and updateVerticalRatio() in Activity\Updater $this->ActivityKeysForTrackdataKeys = [Model\Trackdata\Entity::HEARTRATE => Model\Activity\Entity::HR_AVG, Model\Trackdata\Entity::CADENCE => Model\Activity\Entity::CADENCE, Model\Trackdata\Entity::VERTICAL_OSCILLATION => Model\Activity\Entity::VERTICAL_OSCILLATION, Model\Trackdata\Entity::GROUNDCONTACT => Model\Activity\Entity::GROUNDCONTACT, Model\Trackdata\Entity::POWER => Model\Activity\Entity::POWER, Model\Trackdata\Entity::TEMPERATURE => Model\Activity\Entity::TEMPERATURE]; }
/** * Get field options for data series to remove * @return \FormularCheckbox[] */ protected function fieldOptionsForDataSeriesToRemove() { $Factory = new Factory(SessionAccountHandler::getId()); $Trackdata = $Factory->trackdata($this->dataObject->id()); $Route = $Factory->route($this->dataObject->get('routeid')); $Fields = array(); $TrackdataKeys = array(Trackdata::TIME => __('Time'), Trackdata::DISTANCE => __('Distance'), Trackdata::HEARTRATE => __('Heart rate'), Trackdata::CADENCE => __('Cadence'), Trackdata::VERTICAL_OSCILLATION => __('Vertical oscillation'), Trackdata::GROUNDCONTACT => __('Ground contact time'), Trackdata::POWER => __('Power'), Trackdata::TEMPERATURE => __('Temperature')); foreach ($TrackdataKeys as $key => $text) { if ($Trackdata->has($key)) { $Fields[] = new FormularCheckbox(self::POST_KEY_REMOVE_TRACKDATA . '[' . $key . ']', $text); } } $RouteKeys = array(Route::ELEVATIONS_ORIGINAL => __('Original elevation'), Route::ELEVATIONS_CORRECTED => __('Corrected elevation')); if ($Route->hasPositionData()) { $Fields[] = new FormularCheckbox(self::POST_KEY_REMOVE_ROUTE . '[' . self::POST_KEY_REMOVE_ROUTE_GPS . ']', __('GPS path')); } foreach ($RouteKeys as $key => $text) { if ($Route->has($key)) { $Fields[] = new FormularCheckbox(self::POST_KEY_REMOVE_ROUTE . '[' . $key . ']', $text); } } return $Fields; }
/** * Get content for a given dataset * @param string $name * @return string */ public function getDataset($name) { switch ($name) { case 'sportid': if (!is_null($this->Sport)) { return $this->Sport->icon()->code(); } return ''; case 'typeid': if (!is_null($this->Type)) { if ($this->Type->isQualitySession()) { return '<strong>' . $this->Type->abbreviation() . '</strong>'; } return $this->Type->abbreviation(); } return ''; case 'time': return $this->Dataview->daytime(); case 'distance': return $this->Dataview->distance() . $this->distanceComparison(); case 's': return $this->Dataview->duration()->string(); case 'pace': if ($this->Activity->distance() > 0) { if (isset($this->ActivityData['s_sum_with_distance'])) { if ($this->ActivityData['s_sum_with_distance'] > 0) { $Pace = new Pace($this->ActivityData['s_sum_with_distance'], $this->Activity->distance(), SportFactory::getSpeedUnitFor($this->Activity->sportid())); return $Pace->valueWithAppendix(); } return ''; } return $this->Dataview->pace()->valueWithAppendix(); } return ''; case 'elevation': if ($this->Activity->elevation() > 0) { return $this->Dataview->elevation()->string(); } return ''; case 'kcal': return $this->Dataview->calories(); case 'pulse_avg': if ($this->Activity->hrAvg() > 0) { return $this->Dataview->hrAvg()->string(); } return ''; case 'pulse_max': if ($this->Activity->hrMax() > 0) { return $this->Dataview->hrMax()->string(); } return ''; case 'trimp': return $this->Dataview->trimp(); case 'cadence': if ($this->Dataview->cadence()->value() > 0) { return $this->Dataview->cadence()->asString(); } return ''; case 'stride_length': if ($this->Dataview->strideLength()->value() > 0) { return $this->Dataview->strideLength()->string(); } return ''; case 'groundcontact': return $this->Dataview->groundcontact(); case 'vertical_oscillation': return $this->Dataview->verticalOscillation(); case 'power': return $this->Dataview->power(); case 'temperature': if (!$this->Activity->weather()->temperature()->isUnknown() && (is_null($this->Sport) || $this->Sport->isOutside())) { return Temperature::format($this->Activity->weather()->temperature()->value(), true, false); } return ''; case 'weatherid': if (!$this->Activity->weather()->isEmpty() && (is_null($this->Sport) || $this->Sport->isOutside())) { return $this->Activity->weather()->condition()->icon()->code(); } return ''; case 'routeid': if ($this->Activity->get(Activity\Object::ROUTEID) > 0) { return $this->cut($this->Factory->route($this->Activity->get(Activity\Object::ROUTEID))->name()); } return ''; case 'splits': if (!$this->Activity->splits()->isEmpty()) { if ($this->Activity->splits()->hasActiveAndInactiveLaps() || round($this->Activity->splits()->totalDistance()) != round($this->Activity->distance()) || !is_null($this->Type) && $this->Type->id() == Configuration::General()->competitionType()) { // TODO: Icon with tooltip? $Icon = new Icon(Icon::CLOCK); return $Icon->code(); } } return ''; case 'comment': return $this->cut($this->Activity->comment()); case 'partner': return $this->cut($this->Activity->partner()->asString()); case 'abc': return $this->Dataview->abcIcon(); case 'vdoticon': if (!is_null($this->Sport) && $this->Sport->id() == Configuration::General()->runningSport()) { return $this->Dataview->vdotIcon(); } return ''; case 'vdot': if (!is_null($this->Sport) && $this->Sport->id() == Configuration::General()->runningSport() && $this->Activity->vdotByHeartRate() > 0) { if (!$this->Activity->usesVDOT()) { return '<span class="unimportant">' . $this->Dataview->vdot()->value() . '</span>'; } return $this->Dataview->vdot()->value(); } return ''; case 'jd_intensity': if (!is_null($this->Sport) && $this->Sport->id() == Configuration::General()->runningSport()) { return $this->Dataview->jdIntensityWithStresscolor(); } return ''; case 'fit_vdot_estimate': if (!is_null($this->Sport) && $this->Sport->id() == Configuration::General()->runningSport()) { return $this->Dataview->fitVdotEstimate(); } return ''; case 'fit_recovery_time': return $this->Dataview->fitRecoveryTime(); case 'fit_hrv_analysis': return $this->Dataview->fitHRVscore(); } return ''; }
/** * Get content for a given dataset * @param string $name * @return string */ public function getDataset($name) { switch ($name) { case 'sportid': if (!is_null($this->Sport)) { return $this->Sport->icon()->code(); } return ''; case 'typeid': if (!is_null($this->Type)) { if ($this->Type->isQualitySession()) { return '<strong>' . $this->Type->abbreviation() . '</strong>'; } return $this->Type->abbreviation(); } return ''; case 'time': return $this->Dataview->daytime(); case 'distance': return $this->Dataview->distance() . $this->distanceComparison(); case 's': return $this->Dataview->duration()->string(); case 'pace': if ($this->Activity->distance() > 0) { // TODO: 's_sum_with_distance' //return $this->TrainingObject->DataView()->getSpeedStringForTime( $this->TrainingObject->getTimeInSecondsSumWithDistance() ); return $this->Dataview->pace()->valueWithAppendix(); } return ''; case 'elevation': return $this->Dataview->elevation(); case 'kcal': return $this->Dataview->calories(); case 'pulse_avg': if ($this->Activity->hrAvg() > 0) { return $this->Dataview->hrAvg()->string(); } return ''; case 'pulse_max': if ($this->Activity->hrMax() > 0) { return $this->Dataview->hrMax()->string(); } return ''; case 'trimp': return $this->Dataview->trimp(); case 'cadence': if ($this->Dataview->cadence()->value() > 0) { return $this->Dataview->cadence()->asString(); } return ''; case 'stride_length': if ($this->Dataview->strideLength()->inCM() > 0) { return $this->Dataview->strideLength()->string(); } return ''; case 'groundcontact': return $this->Dataview->groundcontact(); case 'vertical_oscillation': return $this->Dataview->verticalOscillation(); case 'power': return $this->Dataview->power(); case 'temperature': if (!$this->Activity->weather()->temperature()->isUnknown() && (is_null($this->Sport) || $this->Sport->isOutside())) { return $this->Activity->weather()->temperature()->asString(); } return ''; case 'weatherid': if (!$this->Activity->weather()->isEmpty() && (is_null($this->Sport) || $this->Sport->isOutside())) { return $this->Activity->weather()->condition()->icon()->code(); } return ''; case 'routeid': if ($this->Activity->get(Activity\Object::ROUTEID) > 0) { return $this->cut($this->Factory->route($this->Activity->get(Activity\Object::ROUTEID))->name()); } return ''; case 'clothes': return $this->cut($this->Dataview->clothes()); case 'splits': if (!$this->Activity->splits()->isEmpty()) { if ($this->Activity->splits()->hasActiveAndInactiveLaps() || round($this->Activity->splits()->totalDistance()) != round($this->Activity->distance()) || !is_null($this->Type) && $this->Type->id() == Configuration::General()->competitionType()) { // TODO: Icon with tooltip? $Icon = new Icon(Icon::CLOCK); return $Icon->code(); } } return ''; case 'comment': return $this->cut($this->Activity->comment()); case 'partner': return $this->cut($this->Activity->partner()->asString()); case 'abc': return $this->Dataview->abcIcon(); case 'shoeid': if ($this->Activity->shoeID() > 0) { return ShoeFactory::NameOf($this->Activity->shoeID()); } return ''; case 'vdoticon': if (!is_null($this->Sport) && $this->Sport->id() == Configuration::General()->runningSport()) { return $this->Dataview->vdotIcon(); } return ''; case 'vdot': if (!is_null($this->Sport) && $this->Sport->id() == Configuration::General()->runningSport() && $this->Activity->vdotByHeartRate() > 0) { if (!$this->Activity->usesVDOT()) { return '<span class="unimportant">' . $this->Dataview->vdot()->value() . '</span>'; } return $this->Dataview->vdot()->value(); } return ''; case 'jd_intensity': if (!is_null($this->Sport) && $this->Sport->id() == Configuration::General()->runningSport()) { return $this->Dataview->jdIntensityWithStresscolor(); } return ''; } return ''; }