From eccbb9c48aa1e63e98dccf3ec0c2b7ba5f543309 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Wed, 1 Jun 2016 14:57:25 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=20=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D1=82=D1=8C=20=D1=80=D0=B0=D0=B7=D1=80=D0=B5=D0=B7?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=82=D1=80=D0=B5=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=87=D0=B0=D1=81=D1=82=D0=B8,=20=D0=BD=D0=BE?= =?UTF-8?q?=20=D1=87=D1=82=D0=BE-=D1=82=D0=BE=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D0=B5=D1=82=20=D0=BD=D0=B5=20=D1=82=D0=B0=D0=BA=20?= =?UTF-8?q?-=20=D1=82=D1=83=D0=BF=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20=D1=82?= =?UTF-8?q?=D0=BE=D1=87=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/EdittrackController.php | 133 ++++++++++++++++++++++++++-- controllers/JsonController.php | 2 +- public/js/editTrack.js | 7 ++ views/tracks/edit.php | 14 ++- 4 files changed, 147 insertions(+), 9 deletions(-) create mode 100644 public/js/editTrack.js diff --git a/controllers/EdittrackController.php b/controllers/EdittrackController.php index 5a779fe..7718845 100644 --- a/controllers/EdittrackController.php +++ b/controllers/EdittrackController.php @@ -81,7 +81,7 @@ class EdittrackController extends Controller $trip->json = ''; $trip->save(); - App::redirect('/tracks/edit/id/'.$trip->id); + App::redirect('/tracks/edit/id/' . $trip->id); } function actionMergetrack() @@ -99,7 +99,7 @@ class EdittrackController extends Controller } $takeIt = $mergetId = $merget = FALSE; - $tracks = Tracks::model()->getAll(array('where'=>'`tripId` = ?'), array($trip->id)); + $tracks = Tracks::model()->getAll(array('where' => '`tripId` = ?'), array($trip->id)); foreach ($tracks as $key => $value) { if ($takeIt) { $mergetId = $key; @@ -129,7 +129,7 @@ class EdittrackController extends Controller $trip->json = ''; $trip->save(); - App::redirect('/tracks/edit/id/'.$trip->id); + App::redirect('/tracks/edit/id/' . $trip->id); } function actionWaypoint() @@ -170,7 +170,7 @@ class EdittrackController extends Controller $trip->json = ''; $trip->save(); - App::redirect('/tracks/edit/id/'.$trip->id); + App::redirect('/tracks/edit/id/' . $trip->id); } function actionGettrackdetails() @@ -187,8 +187,129 @@ class EdittrackController extends Controller App::error404(); } - $trackpoints = TrackPoints::model()->getAll(array('where' => '`trackId` = '.$track->id, 'asArray' => TRUE, 'noKeys' => TRUE,)); + $trackpoints = TrackPoints::model()->getAll(array('where' => '`trackId` = ' . $track->id, 'asArray' => TRUE, 'noKeys' => TRUE,)); self::renderPartial('json.php', $trackpoints); } -} \ No newline at end of file + + function actionCut() + { + $id = intval(App::getParam('id')); + + $trackPoint = TrackPoints::model()->getByPK($id); + if ($trackPoint->isEmpty()) { + App::error404(); + } + + $track = Tracks::model()->getByPK($trackPoint->trackId); + if ($track->isEmpty()) { + App::error404(); + } + + $trip = Trips::model()->getByPK($track->tripId); + if ($trip->isEmpty() || $trip->owner != App::$user->id) { + App::error404(); + } + + $tracks = Tracks::model()->getAll(array('where' => '`tripId` = ?'), array($trip->id)); + foreach ($tracks as $trk) { + $newTrack = Tracks::model()->add( + array( + 'tripId' => $trip->id, + 'name' => $trk->name, + 'distance' => $trk->distance, + 'description' => $trk->description, + ) + ); + + + if ($trk->id == $track->id) { +// $prevPoint = false; +// $distanceTmp = 0; + $trackPoints = TrackPoints::model()->getAll(array('where'=>'`trackId` = ? AND `id` <= ?', 'order' => 'id'), array($trk->id, $trackPoint->id)); + foreach ($trackPoints as $tpt) { + TrackPoints::model()->add( + array( + 'trackId' => $newTrack->id, + 'lat' => floatval($tpt->lat), + 'lng' => floatval($tpt->lng), + 'alt' => $tpt->alt, + 'createdAt' => $tpt->createdAt, + 'speed' => $tpt->speed, + ) + ); + +// if ($prevPoint) { +// $distanceTmp += Geo::distance($prevPoint, array('lat' => floatval($tpt->lat), 'lng' => floatval($tpt->lng))); +// } +// +// $prevPoint = array( +// 'lat' => floatval($tpt->lat), +// 'lng' => floatval($tpt->lng), +// ); + } +// $newTrack->distance = $distanceTmp; +// $newTrack->save(); + + $prevPoint = false; + $distanceTmp = 0; + $newTrack = Tracks::model()->add( + array( + 'tripId' => $trip->id, + 'name' => $trk->name . ' / #2', + 'distance' => $trk->distance, + 'description' => $trk->description, + ) + ); + + $trackPoints = TrackPoints::model()->getAll(array('where'=>'`trackId` = ? AND `id` >= ?', 'order' => 'id'), array($trk->id, $trackPoint->id)); + foreach ($trackPoints as $tpt) { + TrackPoints::model()->add( + array( + 'trackId' => $newTrack->id, + 'lat' => floatval($tpt->lat), + 'lng' => floatval($tpt->lng), + 'alt' => $tpt->alt, + 'createdAt' => $tpt->createdAt, + 'speed' => $tpt->speed, + ) + ); + +// if ($prevPoint) { +// $distanceTmp += Geo::distance($prevPoint, array('lat' => floatval($tpt->lat), 'lng' => floatval($tpt->lng))); +// } +// +// $prevPoint = array( +// 'lat' => floatval($tpt->lat), +// 'lng' => floatval($tpt->lng), +// ); + } +// $newTrack->distance = $distanceTmp; +// $newTrack->save(); + } else { + $trackPoints = TrackPoints::model()->getAll(array('where'=>'`trackId` = ?', 'order' => 'id'), array($trk->id)); + foreach ($trackPoints as $tpt) { + TrackPoints::model()->add( + array( + 'trackId' => $newTrack->id, + 'lat' => floatval($tpt->lat), + 'lng' => floatval($tpt->lng), + 'alt' => $tpt->alt, + 'createdAt' => $tpt->createdAt, + 'speed' => $tpt->speed, + ) + ); + } + } + + App::DB()->query("DELETE FROM `trackPoints` WHERE `trackId` = ".$trk->id); + $trk->delete($trk->id); + } + + $trip->json = ''; + $trip->save(); + + App::redirect('/tracks/edit/id/' . $trip->id); + } + +} diff --git a/controllers/JsonController.php b/controllers/JsonController.php index 1def25c..69dc53c 100644 --- a/controllers/JsonController.php +++ b/controllers/JsonController.php @@ -621,7 +621,7 @@ class JsonController extends Controller } - $tracks = Tracks::model()->getAll(array('where' => '`tripId` = ?'), array($trip->id)); + $tracks = Tracks::model()->getAll(array('where' => '`tripId` = ?', 'order' => 'id'), array($trip->id)); if ($tracks) { foreach ($tracks as $track) { $resLatlngs = array(); diff --git a/public/js/editTrack.js b/public/js/editTrack.js new file mode 100644 index 0000000..9facedf --- /dev/null +++ b/public/js/editTrack.js @@ -0,0 +1,7 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + + diff --git a/views/tracks/edit.php b/views/tracks/edit.php index 34672f4..8f79568 100644 --- a/views/tracks/edit.php +++ b/views/tracks/edit.php @@ -49,7 +49,7 @@ - + @@ -170,7 +170,7 @@ $('#trackpointsList'+id).html(''); if (typeof (data) != 'undefined') { for (var i = 0; i < data.length; i++) { - $('
' + data[i].id + ' - ' + data[i].lat + ' / '+ data[i].lng+'
').appendTo('#trackpointsList'+id); + $(makeRow(data[i])).appendTo('#trackpointsList'+id); } } }, @@ -179,4 +179,14 @@ } }); } + + function makeRow(data) + { + row = '
'; + row += data.id + ' - ' + data.lat + ' / '+ data.lng; + row += ' '; + row += '
'; + return row; + } +