ADD слияние фрагментов трека; начало работ по детализации трека до точек

This commit is contained in:
Krivchikov Dmitry 2016-05-30 21:42:06 +03:00
parent a543d89a40
commit 0d9ae845b3
2 changed files with 98 additions and 5 deletions

View File

@ -84,6 +84,54 @@ class EdittrackController extends Controller
App::redirect('/tracks/edit/id/'.$trip->id);
}
function actionMergetrack()
{
$id = intval(App::getParam('id'));
$track = Tracks::model()->getByPK($id);
if ($track->isEmpty()) {
App::error404();
}
$trip = Trips::model()->getByPK($track->tripId);
if ($trip->isEmpty() || $trip->owner != App::$user->id) {
App::error404();
}
$takeIt = $mergetId = $merget = FALSE;
$tracks = Tracks::model()->getAll(array('where'=>'`tripId` = ?'), array($trip->id));
foreach ($tracks as $key => $value) {
if ($takeIt) {
$mergetId = $key;
$merget = $value;
break;
}
if ($key == $id) {
$takeIt = TRUE;
}
}
if (!$mergetId) {
App::error404();
}
$track->name = $track->name . '; ' . $merget->name;
$track->distance = $track->distance + $merget->distance;
if ($merget->description) {
$track->description = $track->description . '; ' . $merget->description;
}
$track->save();
App::DB()->query("UPDATE `trackPoints` SET `trackId` = $id WHERE `trackId` = $mergetId");
$track->delete($mergetId);
$trip->json = '';
$trip->save();
App::redirect('/tracks/edit/id/'.$trip->id);
}
function actionWaypoint()
{
$id = intval(App::getParam('id'));
@ -124,4 +172,23 @@ class EdittrackController extends Controller
App::redirect('/tracks/edit/id/'.$trip->id);
}
function actionGettrackdetails()
{
$id = intval(App::getParam('id'));
$track = Tracks::model()->getByPK($id);
if ($track->isEmpty()) {
App::error404();
}
$trip = Trips::model()->getByPK($track->tripId);
if ($trip->isEmpty() || $trip->owner != App::$user->id) {
App::error404();
}
$trackpoints = TrackPoints::model()->getAll(array('where' => '`trackId` = '.$track->id, 'asArray' => TRUE, 'noKeys' => TRUE,));
self::renderPartial('json.php', $trackpoints);
}
}

View File

@ -1,3 +1,6 @@
<?php
$tracksCounter = 1;
?>
<a href="/tracks/" class="btn btn-success pull-right">
<span class="glyphicon glyphicon-home" aria-hidden="true"></span>
Выйти из редактора
@ -39,16 +42,20 @@
<div class="col-sm-2">
<input type="text" class="form-control" id="trackName<?= $track->id ?>" placeholder="День №__" value="<?= $track->name ?>">
</div>
<div class="col-sm-8">
<div class="col-sm-7">
<input type="text" class="form-control" id="trackDescription<?= $track->id ?>" placeholder="В этот день..." value="<?= $track->description ?>">
</div>
<div class="col-sm-1">
<a href="/edittrack/deletetrack/id/<?= $track->id ?>" class="btn btn-danger" onclick="return confirm('Вы уверены, что хотите удалить фрагмент трека?')"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
<div class="col-sm-2">
<a href="/edittrack/deletetrack/id/<?= $track->id ?>" class="btn btn-danger" onclick="return confirm('Вы уверены, что хотите удалить фрагмент трека?')" title="Удалить фрагмент трека"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
<a href="#" class="btn btn-default" onclick="loadTrackDetails(<?= $track->id ?>)" title="Просмотреть точки"><span class="glyphicon glyphicon-list" aria-hidden="true"></span></a>
<?php if ($tracksCounter < count($tracks)):?>
<a href="/edittrack/mergetrack/id/<?= $track->id ?>" class="btn btn-default" onclick="return confirm('Вы уверены, что хотите совместить фрагмент трека с идущим ниже?')" title="Слить с идущим ниже"><span class="glyphicon glyphicon-save" aria-hidden="true"></span></a>
<?php endif; ?>
</div>
</div>
</form>
<!--<hr/>-->
<?php endforeach; ?>
<div id="trackpointsList<?= $track->id ?>"></div>
<?php $tracksCounter++; endforeach; ?>
<span id="trackSavedOK" style="color: #999; display: none;">изменения сохранены...</span>
<span id="trackSavedError" style="color: #900; display: none;">при сохранении возникла ошибка!</span>
<br/>
@ -153,4 +160,23 @@
}
});
}
function loadTrackDetails(id)
{
$.ajax({
url: "/edittrack/gettrackdetails/id/" + id,
method: "POST",
success: function (data) {
$('#trackpointsList'+id).html('');
if (typeof (data) != 'undefined') {
for (var i = 0; i < data.length; i++) {
$('<div>' + data[i].id + ' - ' + data[i].lat + ' / '+ data[i].lng+'</div>').appendTo('#trackpointsList'+id);
}
}
},
error: function (data) {
console.log(data);
}
});
}
</script>